根据NODE_ENV设置 Gulp 任务

igsr9ssn  于 2022-12-16  发布在  Gulp
关注(0)|答案(5)|浏览(257)

是否有办法根据设置的NODE_ENV指定 Gulp 任务?
例如,在我的package.json文件中,我有这样的内容:

"scripts": {
    "start": "gulp"
 }

我有多个gulp任务

gulp.task('development', function () {
   // run dev related tasks like watch 
});

gulp.task('production', function () {
   // run prod related tasks
});

如果我设置了NODE_ENV=production npm start,我可以指定只运行gulp production吗?或者有更好的方法来做到这一点吗?

goqiplq2

goqiplq21#

在默认的gulp任务中使用一个三元组,可以得到如下结果:

gulp.task('default',
  [process.env.NODE_ENV === 'production' ? 'production' : 'development']
);

然后,您就可以在package.json中保留单个gulp命令,并按照您所说的那样使用该命令:

NODE_ENV=production npm start

NODE_ENV变量的任何其他值都将启动development任务。
当然,您可以使用一个允许执行多个任务并避免if树地狱的对象来进行高级使用:

var tasks = {
  development: 'development',
  production: ['git', 'build', 'publish'],
  preprod: ['build:preprod', 'publish:preprod'],
  ...
}

gulp.task('default', tasks[process.env.NODE_ENV] || 'fallback')

请记住,当给出一组任务时,它们将并行运行。

mbzjlibv

mbzjlibv2#

让您的第一个gulp任务基于process.env.NODE_ENV值运行其他gulp任务。

gulp.task('launcher', function(){
  switch (process.env.NODE_ENV){
    case 'development':
      // Run dev tasks from here
      break;
    case 'production':
      // Run prod tasks
      break;
  }
});
r1zhe5dt

r1zhe5dt3#

另一个简单的方法是

gulp.task('set-dev-env', function () {
    return process.env.NODE_ENV = 'development';
});

gulp.task('set-prod-env', function () {
    return process.env.NODE_ENV = 'production';
});

gulp.task('development', ['set-dev-env'], function () {
    // your code
});

gulp.task('production', ['set-prod-env'], function () {
    // your code
});

运行gulp productiongulp development

sg2wtvxw

sg2wtvxw4#

您也可以使用gulp-mode插件。
用法:

var gulp = require('gulp');
    var mode = require('gulp-mode')();
    var uglify = require('gulp-uglify');

    gulp.task('default', function() {
      gulp.src('src/*.js')
          .pipe(mode.production(uglify()))
          .pipe(gulp.dest('dist'));
    });

var isProduction = mode.production();
    if (isProduction) {
        console.log("Production mode");
    }

开始组建为:

gulp build --production

对于“npm运行脚本”用例:

package.json :-
    "scripts": {
        "devbld": "gulp build --development",
        "prodbld": "gulp build --production",
      }

    $ npm run devbld
    $ npm run prodbld
7gs2gvoe

7gs2gvoe5#

if (process.env.NODE_ENV === "production")
  // whatever

相关问题