gulp,任务单独工作但不能成组
gulp, tasks works individually but not in group
我有 3 个任务要按顺序运行:clean
、mincat
然后是 serve
var gulp = require('gulp');
var webserver = require('gulp-webserver');
var usemin = require('gulp-usemin');
var uglify = require('gulp-uglify');
var minifyHtml = require('gulp-minify-html');
var minifyCss = require('gulp-minify-css');
var rev = require('gulp-rev');
var rename = require('gulp-rename');
var del = require('del');
var sequential = require('run-sequence');
gulp.task('clean', function () {
del(['./build/*.*', './build/*']);
});
gulp.task('mincat', function () {
gulp.src('./Index.html')
.pipe(usemin({
css: [minifyCss(), 'concat'],
html: [minifyHtml({ empty: true })],
js: [uglify()],
js1: [uglify()]
}))
.pipe(gulp.dest('./build/'));
});
gulp.task('serve', function () {
gulp.src('build')
.pipe(webserver({
host: 'localhost',
port: 8080,
livereload: true,
open: true
}));
});
gulp.task('dev', function () {
sequential('clean','mincat','serve');
});
如果我从命令提示符下一个接一个地运行这 3 个任务,它就可以工作
gulp clean
gulp mincat
gulp serve
现在我创建了一个任务来使用单个命令运行所有 3 个,但它不起作用。我尝试了所有的形式
添加了运行顺序插件
gulp.task('dev', function () {
sequential('clean','mincat','serve');
});
最初并行运行
gulp.task('dev', ['clean','mincat','serve'])
我也试过分开发球
gulp.task('dev', ['clean','mincat'] function () {
gulp.start('serve');
})
但这些都不起作用,有人可以指出问题吗?
首先,您的 2 无法工作,因为 gulp 依赖项都是 运行 并行的,没有特定顺序。 3 可以工作,但不推荐,因为它不遵循 gulp 准则。
这让我们1。你做的是正确的,但你遇到的问题是 gulp 不知道你的任务何时完成,所以它等同于 运行 一切并行。
要使任务同步,您必须return它的流。由于 del
不是流,因此您只需使用 callback
。对于你的serve
,我认为你不必这样做,因为它终于推出了。
这看起来像:
gulp.task('clean', function (cb) {
del(['./build/*.*', './build/*'], cb);
});
gulp.task('mincat', function () {
return gulp.src('./Index.html')
.pipe(usemin({
css: [minifyCss(), 'concat'],
html: [minifyHtml({ empty: true })],
js: [uglify()],
js1: [uglify()]
}))
.pipe(gulp.dest('./build/'));
});
我不明白为什么你会想到 .js1
文件,顺便说一句,你的 index.html
应该是小写的:)
我有 3 个任务要按顺序运行:clean
、mincat
然后是 serve
var gulp = require('gulp');
var webserver = require('gulp-webserver');
var usemin = require('gulp-usemin');
var uglify = require('gulp-uglify');
var minifyHtml = require('gulp-minify-html');
var minifyCss = require('gulp-minify-css');
var rev = require('gulp-rev');
var rename = require('gulp-rename');
var del = require('del');
var sequential = require('run-sequence');
gulp.task('clean', function () {
del(['./build/*.*', './build/*']);
});
gulp.task('mincat', function () {
gulp.src('./Index.html')
.pipe(usemin({
css: [minifyCss(), 'concat'],
html: [minifyHtml({ empty: true })],
js: [uglify()],
js1: [uglify()]
}))
.pipe(gulp.dest('./build/'));
});
gulp.task('serve', function () {
gulp.src('build')
.pipe(webserver({
host: 'localhost',
port: 8080,
livereload: true,
open: true
}));
});
gulp.task('dev', function () {
sequential('clean','mincat','serve');
});
如果我从命令提示符下一个接一个地运行这 3 个任务,它就可以工作
gulp clean
gulp mincat
gulp serve
现在我创建了一个任务来使用单个命令运行所有 3 个,但它不起作用。我尝试了所有的形式
添加了运行顺序插件
gulp.task('dev', function () { sequential('clean','mincat','serve'); });
最初并行运行
gulp.task('dev', ['clean','mincat','serve'])
我也试过分开发球
gulp.task('dev', ['clean','mincat'] function () { gulp.start('serve'); })
但这些都不起作用,有人可以指出问题吗?
首先,您的 2 无法工作,因为 gulp 依赖项都是 运行 并行的,没有特定顺序。 3 可以工作,但不推荐,因为它不遵循 gulp 准则。
这让我们1。你做的是正确的,但你遇到的问题是 gulp 不知道你的任务何时完成,所以它等同于 运行 一切并行。
要使任务同步,您必须return它的流。由于 del
不是流,因此您只需使用 callback
。对于你的serve
,我认为你不必这样做,因为它终于推出了。
这看起来像:
gulp.task('clean', function (cb) {
del(['./build/*.*', './build/*'], cb);
});
gulp.task('mincat', function () {
return gulp.src('./Index.html')
.pipe(usemin({
css: [minifyCss(), 'concat'],
html: [minifyHtml({ empty: true })],
js: [uglify()],
js1: [uglify()]
}))
.pipe(gulp.dest('./build/'));
});
我不明白为什么你会想到 .js1
文件,顺便说一句,你的 index.html
应该是小写的:)