webpack - 将 Gulp 3 文件转换为 Gulp 4
问题描述
我有这个gulpfile.js
,我正在尝试将其转换为 Gulp 4 和 Webpack 4。我基本上只是将所有内容都升级到最新版本并着手解决每个错误。
我已经让它编译和服务,但它不能正确观看和同步。
我认为由于 janky 函数嵌套而编译了两次,并且我在 scss 更改时收到此错误:
ConcurrentCompilationError in plugin "webpack-stream"
我查看了一堆 Gulp 4 样板,并尽我所能用我有限的 js 技能来解释。我不是一个完全的菜鸟,但我也不是一个 js 忍者。
这是当前的 Frankenstein 版本...在 Gulp 4 / Webpack 4 中简化和快乐的任何帮助将不胜感激:
const browserSync = require('browser-sync').create();
const gulp = require('gulp');
const php = require('gulp-connect-php');
const project = require('./package.json').project;
const webpack = require('webpack');
const webpackConfig = require('./webpack.config.js');
const webpackStream = require('webpack-stream');
const compile = () => {
return gulp.src(`${project.js}/index.js`, { allowEmpty: true })
.pipe(
webpackStream(webpackConfig, webpack)
.on('error', (err) => {
console.log('WEBPACK ERROR', err);
})
)
.pipe(gulp.dest('../web'))
.pipe(browserSync.stream({
match: '**/*.css',
}));
};
const watchMarkup = () => {
gulp.watch(['**/*.html'], () => {
browserSync.reload();
});
};
const watchScript = () => {
gulp.watch([
`${project.src.js}/**/*.js`,
`${project.src.js}/**/*.jsx`,
], () => {
browserSync.reload();
});
};
const watchStyle = () => {
gulp.watch(`${project.src.scss}/**/*.scss`, () => {
browserSync.reload();
});
};
const sync = () => {
browserSync.init({
proxy: '127.0.0.1:8010',
ghostMode: false,
host: 'localhost',
open: true,
notify: false,
port: 8000,
});
};
const connectPHP = () => {
php.server({ base: '../web/', port: 8010, keepalive: true });
};
const watch = gulp.parallel(watchMarkup, watchScript, watchStyle);
const serve = gulp.series(compile, gulp.parallel(connectPHP, sync), watch);
gulp.task('start', gulp.series(compile, serve));
gulp.task('default', gulp.series['compile']);
解决方案
推荐阅读
- firefox - 使用脚本在 Firefox 60 ESR 中设置默认应用程序处理程序
- azure - 如何在 Azure 数据资源管理器中为柱形图设置颜色
- c# - 使用BackgroundWorker时从datagrid WPF中一一处理项目
- excel - 使用来自 2 个单元格的日期范围和来自另一个单元格的名称更新数据透视表过滤器
- service - 授权新用户-keycloak
- android - 使用内容观察者更新通话记录的问题
- spring-boot - 使用 MockMultipartFile 进行验收测试,并发生 HttpMessageConversionException
- ajax - 再次 CORS 头痛......对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态
- elasticsearch - (kibana) mapper_parsing_exception
- webpack - webpack 使用closure-webpack-plugin 而不是 google-closure-compiler