gpt4 book ai didi

javascript - Webpack 与 gulp-babel 配合不佳

转载 作者:行者123 更新时间:2023-12-03 05:53:12 27 4
gpt4 key购买 nike

我正在构建一个 gulp 脚本来处理我的 ES2015 代码,最终使用 React,但它根本不起作用。 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 时遇到过这种麻烦吗?

最佳答案

请问,你真的需要 webpack 才能与 gulp-babel 很好地配合吗?我们知道 webpack 与 babel 配合得很好,而且从我到目前为止读到的所有内容来看,webpack 与 gulp 配合得不好。任何 webpack 插件都会发生很多奇怪的事情。到目前为止,我找到的让 webpack 和 gulp 协同工作的最佳资源是 here .

到目前为止,我的建议是,忘记尝试让 webpack 和 gulp 协同工作。相反,当你对 js 进行更改时,只需让 gulp 运行 webpack 即可。这是我的设置:

var webpack = require('webpack');
var path = require('path');

module.exports = {
entry: './assets/js/index.js',
devtool: 'source-map',
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader'
},

... [other webpack things] ...

在我的 package.json 中,我使用 cross-env 设置了一个脚本来运行 webpack

 "scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"wp-dev": "cross-env NODE_ENV=development webpack --progress --hide-modules",
"wp-build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
},

现在在 gulp 中,这是我根据 Phase2technology.com 的建议执行的任务:

gulp.task('webpack', (cb) => {
exec('npm run wp-dev', function(err, stdout, stderr){
console.log(stdout);
console.log(stderr);
cb(err);
});
});

我真的认为这里的关键是让 webpack 进行捆绑并使用 gulp 来运行任务。

关于javascript - Webpack 与 gulp-babel 配合不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40056364/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com