Webpack не играет хорошо с глотком-babel
Я создаю сценарий gulp для обработки моего кода ES2015, в конечном итоге с реакции, но он просто не работает. Углифи был выкидывать ошибки. (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"
}
ОБНОВЛЕНИЕ: Итак, я пошел и создал отдельное задание только для Вавилона, и оно работает. Когда я добавил uglify и переименовал, он работает, но когда я добавляю Webpack, у него возникают проблемы. Очевидно, что Webpack не играет хорошо. У кого-нибудь еще были такие проблемы при работе с Webpack и gulp?
1 ответ
Позвольте мне спросить: вам действительно нужен веб-пакет, чтобы хорошо поиграть с gulp-babel? Мы знаем, что webpack хорошо сочетается с babel и, как правило, из всего, что я прочитал, webpack плохо работает с gulp. Есть много странных вещей, происходящих с любым из плагинов веб-пакетов. Лучший ресурс, который я нашел на данный момент для совместной работы webpack и gulp, здесь.
Мой совет до сих пор, забудьте о попытке получить веб-пакет и глоток, чтобы хорошо играть вместе. Вместо этого просто сделайте gulp run webpack, когда у вас есть изменения в вашем js. Вот мои настройки:
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 для запуска задач.