2

我正在处理一项关于压缩更少和缩小 css 的 gulp 任务,唯一麻烦的是我需要在 3 个不同的环境(本地、开发、产品)中使用 3 个 files.less 硬编码 3 个不同的变量。每次删除它(原始文件)后,我都会交换正确版本的正确环境。在 main.less 文件中,我包含了 original.less 文件。

(小米英语和解说技巧不亮)

gulp.task('before-less', function(cb) {
    if(gutil.env.dev === true) {
        gutil.log('     preprod environment \n');  gulp.src('path/to/dev.less').pipe(rename('original.less')).pipe(gulp.dest('path/to/css'));
    } else if (gutil.env.prod === true) {
        gutil.log('     prod environment \n');
        gulp.src('path/to/prod.less').pipe(rename('original.less')).pipe(gulp.dest('path/to/css'));   
    } else {
        gutil.log('     local environment \n');
        gulp.src('path/to/local.less').pipe(rename('original.less')).pipe(gulp.dest('path/to/css'));
    }
});

gulp.task('less', ['before-less'], function() {
    gutil.log(' LESSing ');

    gulp.src(rute + 'css/*.less')
        .pipe(less({
            paths: [path.join(__dirname, 'less', 'includes')]
        })).on('error', gutil.log)
        .pipe(minifycss()) // Minify
        .pipe(gulp.dest(rute + 'css'))
        // .pipe(notify({message : "Modifications LESS" }))
        .pipe(connect.reload());
});

我认为 less 的任务运行正确,但问题是当 gulp less 包含我的 original.less 文件时,它们应该首先读取 var 还是先包含它然后再读取 var?

我包括我的 gulp 任务,因为有人对这个“问题”有更好的组织

4

2 回答 2

2

我认为您应该针对不同的情况考虑子任务或完成不同的任务。

我认为 less 的任务运行正确,但问题是当 gulp less 包含我的 original.less 文件时,它们应该首先读取 var 还是先包含它然后再读取 var?

Less 使用延迟加载和变量的最后声明获胜,另请参见http://lesscss.org/features/#variables-feature-lazy-loading。前面的意思是,如果您在包含后再次声明相同的变量,它将覆盖代码中各处的变量。

于 2015-02-11T23:50:32.667 回答
0

我找到了 runSequence gulp 包的解决方案。

因为我发现 Gulp 可以同步工作,并且 mi second task less 在 mi first task before-less 之后开始,它们失败并给我一个错误。

使用 runSequence 我可以执行以下操作:

  var runSequence = require('run-sequence');

  gulp.task('default', function(callback) {
    runSequence('before-less', ['less'], callback);
  });

来源

同步查找有关 gulp 的更多信息,这可能是非常好的其他选择和更“优雅的节点”(使用回调)

于 2015-02-12T10:26:07.233 回答