如何对任务进行分组?
How do I group tasks?
我正在试验 gulp 4,我有几个插入的任务(buildIndex
、buildContent
、buildStyling
和 buildScripts
)构建文件夹中的文件。
我想将这些任务组合成一个任务,这样我就可以在顶层执行该组。
这就是我现在让它工作的方式。它可能在未来不起作用,因为 this comment 指出 gulp 4 意图在顶层执行所有任务。
const { src, dest, parallel, series, watch } = require('gulp');
const browserSync = require('browser-sync').create();
const clean = require('gulp-clean');
const uglify = require('gulp-uglify');
const sass = require('gulp-sass');
var rename = require('gulp-rename');
exports.default = series(
rebuild,
parallel(
host,
watchSource));
function rebuild(cb) {
series(
deleteBuild,
build)();
cb();
}
function host(cb) {
browserSync.init({
server: {
baseDir: 'build'
}
});
watch('build/**').on('change', browserSync.reload);
cb();
}
function watchSource() {
watch('src/**', rebuild);
}
function deleteBuild() {
return src('build', { allowEmpty: true, read: false })
.pipe(clean());
}
function build(cb) {
parallel(
buildIndex,
buildContent,
buildStyling,
buildScripts)();
cb();
}
function buildIndex() {
return src('src/index.html')
.pipe(dest('build'))
.pipe(browserSync.stream());
}
function buildContent() {
return src('src/content/**/*.html')
.pipe(dest('build/content'))
.pipe(browserSync.stream());
}
function buildStyling() {
return src('src/styling/**/*.scss')
.pipe(sass.sync().on('error', sass.logError))
.pipe(dest('build/styling'))
.pipe(browserSync.stream());
}
function buildScripts() {
return src('src/scripts/**/*.js')
.pipe(uglify())
.pipe(rename({ extname: '.min.js' }))
.pipe(dest('build/scripts', { sourcemaps: true }))
.pipe(browserSync.stream());
}
分组任务的正确方法是什么?
编辑:
您已经在 export.default
中声明了默认任务。如果你想添加另一个运行你提到的任务的任务,你可以这样做:
运行 并行任务:
exports.mynewtask = parallel(buildIndex, buildContent, buildStyling, buildScripts);
运行任务一个接一个:
exports.mynewtask = series(buildIndex, buildContent, buildStyling, buildScripts);
正如您在此 Gulp.js documentation for parallel().
中所见,这似乎是对任务进行分组的正确方法
.
与旧 Gulp 语法相同,语法如下:
const gulp = require("gulp");
...
gulp.task('default', gulp.parallel('buildIndex', 'buildContent', 'buildStyling', 'buildScripts'));
// or
gulp.task('default', gulp.series('buildIndex', 'buildContent', 'buildStyling', 'buildScripts'));
我正在试验 gulp 4,我有几个插入的任务(buildIndex
、buildContent
、buildStyling
和 buildScripts
)构建文件夹中的文件。
我想将这些任务组合成一个任务,这样我就可以在顶层执行该组。
这就是我现在让它工作的方式。它可能在未来不起作用,因为 this comment 指出 gulp 4 意图在顶层执行所有任务。
const { src, dest, parallel, series, watch } = require('gulp');
const browserSync = require('browser-sync').create();
const clean = require('gulp-clean');
const uglify = require('gulp-uglify');
const sass = require('gulp-sass');
var rename = require('gulp-rename');
exports.default = series(
rebuild,
parallel(
host,
watchSource));
function rebuild(cb) {
series(
deleteBuild,
build)();
cb();
}
function host(cb) {
browserSync.init({
server: {
baseDir: 'build'
}
});
watch('build/**').on('change', browserSync.reload);
cb();
}
function watchSource() {
watch('src/**', rebuild);
}
function deleteBuild() {
return src('build', { allowEmpty: true, read: false })
.pipe(clean());
}
function build(cb) {
parallel(
buildIndex,
buildContent,
buildStyling,
buildScripts)();
cb();
}
function buildIndex() {
return src('src/index.html')
.pipe(dest('build'))
.pipe(browserSync.stream());
}
function buildContent() {
return src('src/content/**/*.html')
.pipe(dest('build/content'))
.pipe(browserSync.stream());
}
function buildStyling() {
return src('src/styling/**/*.scss')
.pipe(sass.sync().on('error', sass.logError))
.pipe(dest('build/styling'))
.pipe(browserSync.stream());
}
function buildScripts() {
return src('src/scripts/**/*.js')
.pipe(uglify())
.pipe(rename({ extname: '.min.js' }))
.pipe(dest('build/scripts', { sourcemaps: true }))
.pipe(browserSync.stream());
}
分组任务的正确方法是什么?
编辑:
您已经在 export.default
中声明了默认任务。如果你想添加另一个运行你提到的任务的任务,你可以这样做:
运行 并行任务:
exports.mynewtask = parallel(buildIndex, buildContent, buildStyling, buildScripts);
运行任务一个接一个:
exports.mynewtask = series(buildIndex, buildContent, buildStyling, buildScripts);
正如您在此 Gulp.js documentation for parallel().
中所见,这似乎是对任务进行分组的正确方法.
与旧 Gulp 语法相同,语法如下:
const gulp = require("gulp");
...
gulp.task('default', gulp.parallel('buildIndex', 'buildContent', 'buildStyling', 'buildScripts'));
// or
gulp.task('default', gulp.series('buildIndex', 'buildContent', 'buildStyling', 'buildScripts'));