在默认值中引用两个 gulp 任务
Referencing two gulp tasks within a default
我有一个 gulp 'default' 任务,我想在 gulp 继续构建我的缩小 CSS 和 JS 之前清理一个文件夹。每个默认任务 'clean' 任务只需要 运行 一次。但是我在尝试获取默认任务以引用真实构建任务时遇到问题。
所以这是我的 gulp 文件:
var gulp = require('gulp');
// including our plugins
var clean = require('gulp-clean');
var less = require('gulp-less');
var util = require('gulp-util');
var lsourcemaps = require('gulp-sourcemaps');
var rename = require('gulp-rename');
var filesize = require('gulp-filesize');
var ugly = require('gulp-uglify');
var path = require('path');
var plumber = require('gulp-plumber');
var minifyCSS = require('gulp-minify-css');
var concat = require('gulp-concat');
// DEFAULT TASK
gulp.task('default', ['clean'], function() {
.pipe(gulp.task('vendor'))
.pipe(gulp.task('css'))
});
// strips public folder for a build operation nice and clean ** obliterates! **
gulp.task('clean', function() {
return gulp.src('public/**', {read: false})
.pipe(clean());
});
// javascript vendor builds
gulp.task('vendor', function() {
return gulp.src(['bower_comps/angular/angular.js', 'bower_comps/angular-bootstrap/ui-bootstrap.js', 'bower_comps/angular-bootstrap/ui-bootstrap-tpls.js'])
//.pipe(filesize())
.pipe(ugly())
.pipe(concat('vendor.min.js'))
.pipe(gulp.dest('public/js'))
});
// builds CSS
gulp.task('css', function() {
return gulp.src('bower_comps/bootstrap-less/less/bootstrap.less')
.pipe(lsourcemaps.init())
.pipe(plumber({
errorHandler: function(err) {
console.log(err);
this.emit('end')
}
}))
.pipe(less({
paths: [path.join(__dirname, 'less', 'includes')]
}))
.pipe(minifyCSS())
.pipe(rename('site.min.css'))
.pipe(lsourcemaps.write('./maps'))
.pipe(gulp.dest('public/css/'))
.pipe(filesize())
});
那我怎么会出错呢??每个单独的任务都将 运行 独立完成 "gulp css"、"gulp vendor"。就在我将它们放入默认任务(主任务)时,我 'pre-requisite' 我的清洁任务 运行 遇到了问题。
托尼
问题是调用默认任务时,gulp随机选择任务顺序:
gulp.task('default', ['clean', 'move', 'scripts', 'css']);
要解决这个问题,每个任务都应该有依赖关系。例如 move
任务应该在 clean 任务之后执行。所以 move
任务应该是这样的:
gulp.task('move', ['clean'], function () { //your code }
更多解释:https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulptaskname-deps-fn
抱歉我的英语不好:-)
为您的任务尝试这些:
gulp.task('clean', function() {
// Insert cleaning code here
});
gulp.task('vendor', ['clean'], function() {
// Insert your 'vendor' code here
});
gulp.task(‘css’, ['clean'], function() {
// insert your 'css' code here
});
gulp.task('build', [‘vendor’, ‘css’]);
gulp.task('default', ['build']);
'vendor' 和 'css' 仅在 'clean' 完成后才会同时 运行。 'clean' 只会 运行 一次,尽管它是 'vendor' 和 'css' 的先决条件。
我有一个 gulp 'default' 任务,我想在 gulp 继续构建我的缩小 CSS 和 JS 之前清理一个文件夹。每个默认任务 'clean' 任务只需要 运行 一次。但是我在尝试获取默认任务以引用真实构建任务时遇到问题。 所以这是我的 gulp 文件:
var gulp = require('gulp');
// including our plugins
var clean = require('gulp-clean');
var less = require('gulp-less');
var util = require('gulp-util');
var lsourcemaps = require('gulp-sourcemaps');
var rename = require('gulp-rename');
var filesize = require('gulp-filesize');
var ugly = require('gulp-uglify');
var path = require('path');
var plumber = require('gulp-plumber');
var minifyCSS = require('gulp-minify-css');
var concat = require('gulp-concat');
// DEFAULT TASK
gulp.task('default', ['clean'], function() {
.pipe(gulp.task('vendor'))
.pipe(gulp.task('css'))
});
// strips public folder for a build operation nice and clean ** obliterates! **
gulp.task('clean', function() {
return gulp.src('public/**', {read: false})
.pipe(clean());
});
// javascript vendor builds
gulp.task('vendor', function() {
return gulp.src(['bower_comps/angular/angular.js', 'bower_comps/angular-bootstrap/ui-bootstrap.js', 'bower_comps/angular-bootstrap/ui-bootstrap-tpls.js'])
//.pipe(filesize())
.pipe(ugly())
.pipe(concat('vendor.min.js'))
.pipe(gulp.dest('public/js'))
});
// builds CSS
gulp.task('css', function() {
return gulp.src('bower_comps/bootstrap-less/less/bootstrap.less')
.pipe(lsourcemaps.init())
.pipe(plumber({
errorHandler: function(err) {
console.log(err);
this.emit('end')
}
}))
.pipe(less({
paths: [path.join(__dirname, 'less', 'includes')]
}))
.pipe(minifyCSS())
.pipe(rename('site.min.css'))
.pipe(lsourcemaps.write('./maps'))
.pipe(gulp.dest('public/css/'))
.pipe(filesize())
});
那我怎么会出错呢??每个单独的任务都将 运行 独立完成 "gulp css"、"gulp vendor"。就在我将它们放入默认任务(主任务)时,我 'pre-requisite' 我的清洁任务 运行 遇到了问题。
托尼
问题是调用默认任务时,gulp随机选择任务顺序:
gulp.task('default', ['clean', 'move', 'scripts', 'css']);
要解决这个问题,每个任务都应该有依赖关系。例如 move
任务应该在 clean 任务之后执行。所以 move
任务应该是这样的:
gulp.task('move', ['clean'], function () { //your code }
更多解释:https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulptaskname-deps-fn
抱歉我的英语不好:-)
为您的任务尝试这些:
gulp.task('clean', function() {
// Insert cleaning code here
});
gulp.task('vendor', ['clean'], function() {
// Insert your 'vendor' code here
});
gulp.task(‘css’, ['clean'], function() {
// insert your 'css' code here
});
gulp.task('build', [‘vendor’, ‘css’]);
gulp.task('default', ['build']);
'vendor' 和 'css' 仅在 'clean' 完成后才会同时 运行。 'clean' 只会 运行 一次,尽管它是 'vendor' 和 'css' 的先决条件。