我正在构建一个 gulp 脚本来处理我的 ES2015 代码,最终使用反应,但它根本不起作用。Uglify 抛出错误。(stream.js:74 throw er; // 管道中未处理的流错误。)当我查看构建时,很明显 ES2015 代码没有被转换。
此问题的大多数解决方案都涉及缺少的预设。我确保包括babel-preset-es2015
. 我有一个 .babelrc 文件,内容如下:
{
"presets": ["es2015", "react"]
}
没有它,我的 `gulpfile.babel.js 将无法运行。
我要处理的文件非常简单:
// index.js
let bobby = "bobby"
console.log(bobby + ' Drink rum.')
当它变成早期的 JavaScript 时,let
应该被替换为var
. 也许我的有什么问题gulpfile.babel.js
?
import gulp from 'gulp';
import gulpLoadPlugins from 'gulp-load-plugins';
import runSequence from 'run-sequence';
import babel from 'gulp-babel';
// load all gulp-* plugins in node_modules
const plugins = gulpLoadPlugins()
gulp.task('default', () => {
runSequence('build', 'copy:index')
})
gulp.task('build', () => {
return gulp.src('src/**/*.js')
.pipe(babel())
.pipe(plugins.webpack())
// .pipe(plugins.uglify())
.pipe(plugins.rename('bundle.js'))
.pipe(gulp.dest('dist/'))
})
gulp.task('copy:index', () => {
gulp.src('src/index.html')
.pipe(gulp.dest('dist/'))
})
我的 gulp 版本是 3.9.1 我的节点版本是 6.2.0
到目前为止,这些是我的依赖项:
"dependencies": {
"babel-core": "^6.17.0",
"babel-plugin-transform-react-jsx": "^6.8.0",
"babel-preset-es2015": "^6.16.0",
"babel-preset-react": "^6.16.0",
"babel-register": "^6.16.3",
"gulp": "^3.9.1",
"gulp-babel": "^6.1.2",
"gulp-filter": "^4.0.0",
"gulp-load-plugins": "^1.3.0",
"gulp-rename": "^1.2.2",
"gulp-uglify": "^2.0.0",
"gulp-webpack": "^1.5.0",
"react": "^15.4.0-rc.4",
"react-dom": "^15.4.0-rc.4",
"run-sequence": "^1.2.2",
"webpack": "^1.13.2"
}
更新:所以我去为 Babel 创建了一个单独的任务,它可以工作。当我添加 uglify 并重命名它时,它可以工作,但是当我添加 Webpack 时,它有问题。显然,Webpack 表现不佳。有没有其他人在使用 Webpack 和 gulp 时遇到过这种麻烦?