根据NODE_ENV设置gulp任务

cus*_*ice 5 javascript node.js gulp

有没有办法根据NODE_ENV设置来指定gulp任务?

例如在我的package.json文件中,我有类似的东西:

"scripts": {
    "start": "gulp"
 }
Run Code Online (Sandbox Code Playgroud)

我有多个gulp任务

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

gulp.task('production', function () {
   // run prod related tasks
});
Run Code Online (Sandbox Code Playgroud)

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

Bal*_*zar 16

在默认的gulp任务中使用单个三元组,您可以使用以下内容:

gulp.task('default',
  [process.env.NODE_ENV === 'production' ? 'production' : 'development']
);
Run Code Online (Sandbox Code Playgroud)

然后,您将能够将单个gulp命令保留在您的package.json使用中,就像您说的那样:

NODE_ENV=production npm start
Run Code Online (Sandbox Code Playgroud)

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')
Run Code Online (Sandbox Code Playgroud)

请记住,在提供一系列任务时,它们将并行运行.