【问题标题】:Referencing two gulp tasks within a default在默认值中引用两个 gulp 任务
【发布时间】:2015-02-17 23:05:38
【问题描述】:

我有一个 gulp 的“默认”任务,我想在 gulp 继续构建我的缩小 CSS 和 JS 之前清理一个文件夹。这个“干净”任务只需要每个默认任务运行一次。但是我在尝试获取默认任务以引用实际构建任务时遇到问题。 所以这是我的 gulpfile:

    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”。就在我将它们放入默认任务(主任务)中时,我遇到了问题。

托尼

【问题讨论】:

    标签: css gulp gulp-concat gulp-less gulp-default


    【解决方案1】:

    试试这些来完成你的任务:

    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' 完成后才会同时运行。尽管是 'vendor' 和 'css' 的先决条件,但 'clean' 只会运行一次。

    【讨论】:

    • 谢谢大家。你们都在导致同一件事。惊人的。我一直在想,每次调用 css 或 vendor 时都会运行“干净”。我今天学到了一些东西。
    【解决方案2】:

    问题在于调用默认任务时,gulp随机选择任务的顺序:

    gulp.task('default', ['clean', 'move', 'scripts', 'css']);
    

    要解决这个问题,每个任务都应该有依赖关系。例如move 任务应该在清理任务之后执行。所以move taks 应该是这样的:

    gulp.task('move', ['clean'], function () { //your code }
    

    更多解释:https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulptaskname-deps-fn

    对不起我的英语不好:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-23
      • 2021-07-23
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      相关资源
      最近更新 更多