У меня есть шаблон Gulp 4 + Webpack 4, где Webpack контролирует связывание моего ES6 Javascript, а Gulp делает все остальное.
Вот моя задача сценария:
gulp.task('scripts', (cb) => {
gulp.src(paths.js.app)
.pipe(webpackStream(webpackConfig), webpack)
.on('error', handleErrors)
.pipe(gulp.dest(paths.js.dest))
.on('error', handleErrors)
.pipe(development(browserSync.reload({ stream: true })));
cb()
})
И моя конфигурация веб-пакета:
const config = {
mode: env,
entry: {
app: paths.js.app,
},
output: {
path: path.resolve(__dirname, 'app'),
filename: 'bundle.js',
},
externals: {
jquery: 'jQuery'
},
module: {
rules: [
{
test: /\.(js)$/,
exclude: /(node_modules)/,
use: [
{
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
]
},
],
},
optimization: {
minimizer: [new UglifyJsPlugin()],
}
}
И вот моя задача сборки:
gulp.task('build', gulp.series(
gulp.parallel(
'clean-assets',
'styles',
'scripts',
'move-favicons',
'move-scripts',
'move-fonts',
'move-videos',
'images',
'svg',
'nunjucks'
),
'revision'
))
Вы заметите, что я установил все параллельно, кроме задачи ревизии.Это хэширует мои файлы styles.css и bundle.js с gulp-rev, и ссылки в моем html обновляются для соответствия.
Моя проблема заключается в том, что моя задача сценариев завершается до того, как пакет веб-пакетов завершил сборку.js не был сгенерирован к моменту запуска моей ревизионной задачи.
Любые указатели приветствуются.Спасибо