遇到的坑:
gulp的ES6转换问题Cannot find module ‘@babel/core’折腾了我2个多小时,苦得一逼,基本找不到可行的方案
解决方案:严格按照我一下的路线进行安装gulp-babel
步骤一、创建工程目录
Project-demo/
|── dist/
├── src/
├── js/
└── index.js
步骤二、安装gulp和编译ES6所需要的模块
用cd命令进入myProject,分别执行:
1. npm install gulp —save-dev;
2. npm install gulp-babel —save-dev;
// babel-preset-env插件,该插件可以根据配置的目标运行环境自动启用需要的babel插件(即动态转换ES6代码至可执行的JS代码)
3. npm install babel-preset-env —save-dev;
// 根据babel文档指引是不需要babel-core的,但是在实际操作中少了babel-core会报找不到该模块,所以安装上即可
4. npm install babel-core —save-dev; (根本问题所在)
—— 安装ok的话,可以看到根目录下的package.json文件。
步骤三、构建Gulp任务
在Project-demo目录下新建2个文件:gulpfile.js 和.babelrc(注意开头有个.)文件。
说明:
gulp的在运行时会在项目目录下寻找gulpfile.js文件,找不到会报错
同理,babel编译ES6也会相应去找项目目录下寻找.babelrc文件,找不到同样会报错。
在gulpfile.js的内容如下:
var gulp = require('gulp');
var babel = require('gulp-babel');
// 注册任务
gulp.task('es6', function(){
return gulp.src('src/js/*.js')
//将ES6代码转译为可执行的JS代码
.pipe(babel())
.pipe(gulp.dest('dist/static/scripts'))
})
gulp.task('default', ['es6']);
.babelrc的内容如下:
{
“presets”: [“env”]
}
index.js内容:
function foo(num1, num2) {
let num3 = 0; // let是ES6的语法
num3 = num1 + num2;
return num3;
}
步骤四
最后,cd命令进入Project-demo目录,执行gulp命令,会生成一个dist目录,里面会有一个编译好的JS文件(该文件是ES5语法的)