node.js - 如何创建使用 gulp 的 node.js 命令行实用程序

标签 node.js command-line-interface gulp

我一直在开发一个命令行工具,它本质上是 gulp 的自定义设置加上自定义的 gulp 插件。出于多种原因,我希望能够从另一个 Node 应用程序或命令行启动此过程。有什么好的办法吗?

最佳答案

Gulpfiles 只是 Node 应用程序。您可以像任何模块一样在 Node 应用程序中需要它们:

var gulpfile = require('./gulpfile.js');

然后您可以调用 gulpfile 中定义的 gulp 任务:

gulp.start('someTask');

请注意,.start() 将是 deprecated in gulp 4.0

把它们放在一起,看起来像:

var gulp = require('gulp');
require('./gulpfile');

gulp.start('someTask');

或者,您可以使用 Node Child Process .spawn() 方法来调用 gulp,但这可能有点棘手。这是一个示例脚本:

'use strict';

var spawn = require('child_process').spawn;
var cwd = process.env.PWD || process.cwd();

var gulpProc = spawn('gulp', ['taskName'], {
  stdio: 'inherit',
  cwd: cwd
});

gulpProc.on('close', function (code) {
  process.exit(code);
});

// catch exceptions so node doesn't exit prematurely, leaving a runaway process
process.on('uncaughtException', function (err) {
   console.error(err.stack);
   gulpProc.kill('SIGHUP');
});

关于node.js - 如何创建使用 gulp 的 node.js 命令行实用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29837970/

相关文章:

node.js - 我是否需要等待在 Redis 中(在 node.js 中)调用 WATCH 的回调?

node.js - 如果nodejs中给出了繁忙的时段,如何找到一天中的空闲时段

php - 如何捕获用 PHP exec 发出的命令的多行输出?

javascript - Gulp 缩小到同一文件

javascript - gulp-concat 文件中的 typescript

node.js - 如何使用 sequelize 删除唯一选项

node.js - sails.js 中的部分 POSTED 数据(不时)

java - 将参数解析到 Java 命令行程序

ruby - 如何让我的命令行实用程序更新一行而不是打印多行?

gulp - 从Gulp调用 Electron