javascript - 升级 Gulp 3 到 Gulp 4 无需重新加载 BrowserSync
问题描述
我正在尝试从 gulp 3.9 升级到 gulp 4,起初似乎一切正常,但是当我进行更改(sass、pug 或 html 文件)时,它不会使用 browsersync 重新加载),我现在知道是否watch
或 jekyll 是导致这个问题。
我在用:
- 吞咽:4.0.0
- Gulp CLI:2.0.1
- 下午:6.4.0
- 节点:10.9.0
会发生什么?
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var cp = require('child_process');
var pug = require('gulp-pug');
var sass = require('gulp-sass');
var prefix = require('gulp-autoprefixer');
var minifycss = require('gulp-minify-css');
var bourbon = require('bourbon').includePaths;
var rename = require('gulp-rename');
// Message
var messages = {
jekyllBuild: '<span style="color: white">Running:</span> $ jekyll build'
};
// Paths
var paths = {
html: {
src: ['*.html', '_layouts/*.html', '_posts/*', '_includes/*'],
dest: '_includes'
},
pugFiles: {
src: '_jadefiles/*.jade',
dest: '_includes'
},
styles: {
all: 'assets/css/**',
src: 'assets/css/main.scss',
dest: ['assets/css', '_site/assets/css']
},
scripts: {
src: ['assets/js/**/*.js', 'js/*.js'],
dest: ['js', '_site/assets/js']
}
}
// Compile Pug|Jade files into .html
gulp.task('pug', function() {
return gulp.src(paths.pugFiles.src)
.pipe(pug())
.pipe(gulp.dest(paths.pugFiles.dest));
});
// Compile sass into CSS & auto-inject into browsers
gulp.task('sass', function() {
return gulp.src(paths.styles.src)
.pipe(sass({
includePaths: [bourbon],
onError: browserSync.notify
}).on('error', sass.logError))
.pipe(gulp.dest(paths.styles.dest))
.pipe(prefix({
browsers: ['last 15 versions', '> 1%', 'ie 8', 'ie 7'],
cascade: true
}))
.pipe(rename({suffix: '.min', prefix : ''}))
.pipe(minifycss())
.pipe(browserSync.stream());
});
// Watch changes on files
gulp.task('watch', function() {
// gulp.watch(paths.scripts.src).on('change', browserSync.reload);
gulp.watch(paths.html.src, gulp.series('jekyll-rebuild'));
gulp.watch(paths.pugFiles.src, gulp.series('pug'));
gulp.watch(paths.styles.all, gulp.series('sass'));
gulp.watch(paths.html.dest).on('change', browserSync.reload);
});
// Build Jekyll
gulp.task('jekyll-build', function (done) {
browserSync.notify(messages.jekyllBuild);
var pl = process.platform === "win32" ? "jekyll.bat" : "jekyll";
return cp.spawn(pl, ['build'], {stdio: 'inherit'})
.on('close', done);
});
// Rebuild Jekyll site
gulp.task('jekyll-rebuild',
gulp.series('jekyll-build', function () {
browserSync.reload();
})
);
// Static Server
gulp.task('serve', function() {
browserSync.init({
server: {
baseDir: '_site'
}
});
});
gulp.task('default', gulp.series('serve', gulp.parallel('sass', 'pug', 'watch', 'jekyll-build')));
解决方案
推荐阅读
- visual-studio - 使 Visual Studio UI 更小
- javascript - 尝试使用 Here Routing API 7.2 中的航路点时出错
- node.js - 使用 NodeJs Mongo 和 Express 在更新时保留散列密码
- neo4j - 如何在 Neo4jClient 中多次使用 WithParam?
- typescript - 如何使用 babel 7 cli 编译打字稿?
- powershell - 从 foreach 循环内的 if 语句中递增 PowerShell 中的变量。好像坏了
- vaadin - Vaadin @JavaScript 用于不同的构建
- android - RGB565 和 ARGB8888 上的 bitmap.getpixels() 有什么区别
- unicode - 如何在 Rust 中计算字符串中唯一的字素簇?
- sql - MM/dd/yyyy 日期时间数据类型导致值超出范围