babel
babel 在 7 以后引入插件 都是 以@babel开头的,一旦babel-core是引入的7版本,其他插件必须引入7版本的,如 引入 @babel/core 其他插件必须是 @babel开头的
7下
"corejs":2, //是否引入沙盒的polyfill ,值是 2表示是,会覆盖useBuiltIns 的作用,但不会覆盖他的实例方法支持
"helpers": true, // 是否引入 @babel/runtime的帮助函数来替代 在代码中生成帮助函数
"regenerator": false, //是否生成async的完全支持,如果是true,则不需要引入polyfill 就可以运行 async 和await等,如果是false,虽然async 的代码会被转换但是还是要依赖polyfill
//ES语法 如箭头函数 ,async函数
//ES api 如 Promise
//ES实例方法 如 String.prototype.xxx
// plugin 只会转换语法,transform-runtime 会转换api, 实例方法不会被转换,只有在polyfill中引入或者 在babel7中使用useBuiltIns: "usage"
babelplugin 中 transform-runtime 7以前的参数是{
"polyfill",:true
"helper":true,
xxx
} 默认都是ture,可以不填
7以后是 不填不会正常转换:
{
corejs代替了 polyfill 且corejs 启用的参数值是 :2
}
var babel = require("@babel/core");
var fs = require("fs")
babel.transformFile("./src/test1.js",{
presets:["@babel/preset-env"],
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"corejs":2,
"helpers": true,
"regenerator": true,
"useESModules": false
}
]
]
},function(error,result){
if(error)
{
console.log(error+"")
return;
}
fs.writeFile("./dist/test1.js",result.code,function(){
})
})
{
"name": "babel",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"@babel/core": "^7.1.2"
},
"devDependencies": {
"@babel/plugin-transform-runtime": "^7.1.0",
"@babel/polyfill": "^7.0.0",
"@babel/preset-env": "^7.1.0",
"@babel/runtime": "^7.1.2",
"babel-plugin-transform-runtime": "^6.23.0"
}
}