//文件夹,在命令行中
npm init

之后可以一直回车,答y

出现文件

然后安装bable

npm install -save-dev babel-loader babel-core

文件

然后我们在文件里面添加一些该有的文件,app.js,index.html,webpack.config.js

我们在webpack.config.js中写如下代码:

module.exports={
entry:{
app:'./app.js'
},
output:{
filename:'[name].[hash:8].js'
},
module:{
//rules下的每一项是一个规则
rules:[
{
test:/\.js$/,//一个正则
use:'babel-loader',//如果符合正则的资源,会使用use来处理它
exclude:'/node_modules/',//exclude是排除之外的,意思是node_modules不用执行这个规则 }
]
}
}

配置完babel-loader后,我们还不知道它是由什么规范来打包的,我们可以用babel presets,它是规范的汇总,可以指定babel-loader根据presets打包成什么样

安装它

npm install babel-preset-env -save-dev

我们修改一下webpack.config.js的代码

module.exports={
entry:{
app:'./app.js'
},
output:{
filename:'[name].[hash:8].js'
},
module:{
//rules下的每一项是一个规则
rules:[
{
test:/\.js$/,//一个正则
// use:'babel-loader',//如果符合正则的资源,会使用use来处理它
use:{
loader:'babel-loader' ,
options:{
presets:['@babel-preset-env']
}
},
exclude:'/node_modules/',//exclude是排除之外的,意思是node_modules不用执行这个规则 }
]
}
}

babel presets里面还有一个参数targets,他可以指定代码可以由什么语法编译,什么不能编译,比如target.browsers,指定在浏览器编译,还可以node执行,

target.browsers:"last 2 versions"——最后两个版本执行,

target.browsers:">1%"——全球大于1%的可以执行

它的数据来源于browsweslist

我们在app.js里面写点东西

let func=()=>{

}
const NUM=45;
let arr=[1,2,3];
let arrB=arr.map(item=>item*2);
console.log('new set(arrB)',new set(arrB));

之后运行webpack

结果报错了

Error: Cannot find module '@babel/core'

网上查找后发现官方默认babel-loader | babel 对应的版本需要一致(参考https://www.cnblogs.com/soyxiaobi/p/9554565.html)

npm install -D  @babel/core @babel/preset-env webpack

再webpack一下

箭头函数都变成了普通的js了

如果我们改变一下browsers

use:{
loader:"babel-loader",
options:{
presets:[['@babel/preset-env',{
targets:{
//browsers:['>1%','last 2 versions']
chrome:'52'
}
}]]
}
},

这里还有箭头函数,因为chrome支持es6语法

webpack——bable-loader,core,preset,编译es6的更多相关文章

  1. webpack如何编译ES6打包

    前言:随着ES的普及我们越来越多的开始使用ES6的语法了,当然也随着mvvm框架的流行少不了js模块化,那js模块化又有那些呢 在很早的时候大家都用的命名空间,现在也有人用(库名.类别名.方法名) 后 ...

  2. 使用gulp和bable实现实时编译ES6代码

    这篇文章最初发表在我自己折腾的博客站点上:使用gulp和bable实现实时编译ES6代码,该博客用了一位前辈开源的源码,基于thinkjs和vuejs开发,欢迎大家来逛逛. 问题描述> 项目开发 ...

  3. 前端工程化-webpack(babel编译ES6)

    最新版安装与普通安装 使用babel-loader编译ES6,需要遵循规范,安装babel-presets 规范列表 对应babel-loader,babel-preset安装最新版和普通版: pre ...

  4. vue 2.0 无法编译ES6语法

    # vue2.0 webpack 无法编译 ES6 语法 之前在使用 vue 1.x 时用 vue-loader@8.0.0 版本可以正常打包vue的代码,包括ES6语法也能正常转为ES5语法,但是当 ...

  5. webpack4 系列教程(二): 编译 ES6

    今天介绍webpack怎么编译ES6的各种函数和语法.敲黑板:这是webpack4版本哦, 有一些不同于webpack3的地方. >>> 本节课源码 >>> 所有课 ...

  6. gulp打包js多个文件夹并压缩混淆,编译ES6语法,及多个import依赖由一个入口打包成一个cdn

    感觉和webpack的步骤差不多 首先安装gulp:参考上一篇 安装完之后 新建一个文件目录起名 在当前目录下打开cmd 执行:npm init 创建package.json文件 然后安装第一个插件g ...

  7. webpack之Loader

    我们知道webpack的优点之一就是专注于处理模块化的项目,能做到开箱即用,但同时这也是webpack的缺点,只能用于模块化开发的项目,例如:Vue,React,Angular.Webpack在进行打 ...

  8. 使用babel编译es6

    起因:开发中慢慢的学习使用es6,但是JavaScript需要浏览器来解析,而不是所有浏览器都支持es6,所以为了兼容es6,需要第三方工具进行编译es6. 工具:node,gulp,gulp-bab ...

  9. webpack之loader实践

    初识前端模板概念的开发者,通常都使用过underscore的template方法,非常简单好用,支持赋值,条件判断,循环等,基本可以满足我们的需求. 在使用Webpack搭建开发环境的时候,如果要使用 ...

随机推荐

  1. jQuery样式操作

    获取样式和设置样式 <p class='myClass'  title='this is p'>this is p</p> 样式其实就是class属性所以设置和获取样式都能用a ...

  2. a标记地址的几种用法

    1.<a href="tel://号码"></a> 手机使用能自动拨打电话 //可以省略 2.<a href="mailto://邮箱&qu ...

  3. ThinkPHP3.1.3分表状态时候的自动验证的代码BUG

    问题描述 ThinkPHP3.1.3 当使用TP的分库分表后 有些地方需要使用Model自动验证create,当验证唯一性unique会出现BUG, 具体描述 因为自动验证检测唯一性会使用隐式的使用f ...

  4. 《你又怎么了我错了行了吧》【Alpha】Scrum meeting 1

    第一天 日期:2019/6/14 前言: 第1次会议在9C-405召开 4个人讨论了整体代码的框架.布局.找出需要改进的地方重点讨论.明确编码的具体分工,每个人搭建好环境. 1.1 今日完成任务情况以 ...

  5. WinSCP介绍、安装、使用

    前言 如果说XManager通过Xshell.Xftp可以很方便的进行远程管理,那么PuTTY显然不能满足我们的需求,所以这也是今天要介绍的另外一个工具-WinSCP. 简介 WinSCP是一个Win ...

  6. POJ 2018

    又一水,设dp[i]为以i结尾的有最大平均值的起始位置. #include <iostream> #include <cstdio> #include <cstring& ...

  7. 略微复杂的sql逻辑(从数据库逆序查找有限条记录(limit))并按相反顺序输出

    项目中有一个业务需求是:默认载入15条历史记录(按时间顺序从早到晚). 以下是我构造的sql逻辑,mark一下,亲測可行. SELECT * FROM (SELECT *FROM group_chat ...

  8. 安卓系统底层C语言算法之測试參数是几个long型的算法

    #include <stdio.h> #define BITS_PER_LONG (sizeof(unsigned long) * 8) //求一个数x是几个long的长度 #define ...

  9. 【iOS开发系列】UIDevice设备信息

    [1] 推断是否是横向屏: BOOL b=UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation); 获取设备uniqu ...

  10. 2015.05.05,外语,读书笔记-《Word Power Made Easy》 15 “如何谈论事情进展” SESSION 42

    HOW TO TALK ABOUT WHAT GOES ON TEASER PREVIEW 一些以-ate结束的动词,通常表示: to exhaust([ig'zɔ:st] n. 排气,排气装置 v. ...