启动gulp任务时设置环境模式并输出消息

时间:2017-11-09 12:38:54

标签: javascript node.js gulp

我想知道如何在运行gulp进程时向终端输出消息,以及如何设置环境以特定方式运行任务。

  1. 我确定我之前见过像gulp scripts:dev这样的东西,但不知道如何使用,有人可以建议我怎么做吗?
  2. 您将如何以这种方式运行默认任务gulp deafult:dev
  3. 当执行gulp命令时,是否可以询问用户他们想在终端中运行任务的环境,如果他们没有指定它。
  4. 我已经使用gulp-if插件来实现这一点,但它的工作方式略有不同,您需要在运行gulp之前设置节点环境变量,即NODE_ENV=dev gulp

    var gulp = require('gulp'),
        sass = require('gulp-ruby-sass'),
        gulpif = require('gulp-if'),
        shell = require('gulp-shell');
    
    var isDev = process.env.NODE_ENV === 'dev';
    
    // gulp-shell task to output messages to terminal
    gulp.task('info', shell.task([
        'echo run in developer mode with  this command: NODE_ENV=dev gulp'
    ]));
    
    // Styles Task
    // Uses gulp-if plugin to run task differently dependent on env.
    gulp.task('styles', ['info'], function () { // eslint-disable-line strict
        return sass('css/sass/*.scss', {
            style: gulpif(!isDev,'compressed','expanded'),
            cacheLocation: 'css/sass/.sass-cache',
            sourcemap: isDev
        })
        [...code ommitted...]
    });    
    
    gulp.task('default', ['h','styles']);
    
    1. 我还使用上面的gulp-shell向终端输出消息,但它非常基本。无论如何,我可以使用我输出到终端的消息,使用换行符和颜色做类似的事情。

2 个答案:

答案 0 :(得分:0)

看看gulp-environments - 你可以设置任意多个,但dev和prod足以满足大多数人的要求。您可以在gulpfile中定义每个,并在每个gulp脚本中设置不同的事件。所以你的样式脚本可以包含一个.pipe(dev(一些dev只有源代码代码))和一个.pipe(prod(一些迷你固定构建代码))。您可以使用--env标志从git bash运行脚本... gulp --env dev或gulp --env prod。并且从或多或少相同的脚本运行两个完全不同的构建周期。您可以设置默认的gulp任务来运行所有页面脚本,它只会在循环时为每个环境执行。

答案 1 :(得分:0)

要将消息输出到终端,您可能需要 gulp-util 节点模块。

示例代码:

gulp.task('test', () => {
    gutil.log(gutil.colors.yellow('=== Testing ==='));    
});