zhongweinan 2019-06-30
标签(空格分隔): babel
.babelrc 文件。 如果不存在,它会遍历目录树,直到找到一个 .babelrc 文件,或一个 package.json 文件中有 "babel": {}babel6将babel全家桶拆分成了许多不同的模块(rc是run command的缩写){
"presets": [],
"plugins": []
}presets字段设定转码规则,官方提供以下的规则集,按需安装。# ES2015转码规则 babel-preset-es2015 # react转码规则 babel-preset-react # ES7不同阶段语法提案的转码规则(共有4个阶段) babel-preset-stage-0 babel-preset-stage-1: draft - 必须包含2个实验性的具体实现,其中一个可以是用转译器实现的,例如Babel。 babel-preset-stage-2: candidate - 至少要有2个符合规范的具体实现。 babel-preset-stage-3
配置:
{
"presets": [
"es2015",
"stage-2"
],
"plugins": []
}babel-preset-env此段内容来自于babel到底该如何配置?
babel-preset-env// cnpm install -D babel-preset -env
{
"presets": [
["env", {
"targets": { //指定要转译到哪个环境
//浏览器环境
"browsers": ["last 2 versions", "safari >= 7"],
//node环境
"node": "6.10", //"current" 使用当前版本的node
},
//是否将ES6的模块化语法转译成其他类型
//参数:"amd" | "umd" | "systemjs" | "commonjs" | false,默认为'commonjs'
"modules": 'commonjs',
//是否进行debug操作,会在控制台打印出所有插件中的log,已经插件的版本
"debug": false,
//强制开启某些模块,默认为[]
"include": ["transform-es2015-arrow-functions"],
//禁用某些模块,默认为[]
"exclude": ["transform-es2015-for-of"],
//是否自动引入polyfill,开启此选项必须保证已经安装了babel-polyfill
//参数:Boolean,默认为false.
"useBuiltIns": false
}]
]
}{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins": [
"transform-vue-jsx",
"transform-runtime",
"syntax-dynamic-import",
"transform-es2015-modules-commonjs"
]
}此段内容来自于babel到底该如何配置?
{
"plugins": [
["transform-es2015-arrow-functions", { "spec": true }]
]
}transform-runtime,这个插件能自动为项目引入polyfill和helperstransform-runtime这个插件依赖于babel-runtimebabel-runtime由三个部分组成:
core-js{
"plugins": [
["transform-runtime", {
"helpers": false, //自动引入helpers
"polyfill": false, //自动引入polyfill(core-js提供的polyfill)
"regenerator": true, //自动引入regenerator
}]
]
}比较transform-runtime与babel-polyfill引入垫片的差异:
使用runtime是按需引入,需要用到哪些polyfill,runtime就自动帮你引入哪些,不需要再手动一个个的去配置plugins,只是引入的polyfill不是全局性的,有些局限性。而且runtime引入的polyfill不会改写一些实例方法,比如Object和Array原型链上的方法,像前面提到的Array.protype.includes。{
"parser": "babel-eslint",
"rules": {
...
}
}"scripts": {
"lint": "eslint --ext .js,.vue src",
},部分参考:
babel到底该如何配置?