【问题标题】:How do I create a node.js command line utility that uses gulp如何创建使用 gulp 的 node.js 命令行实用程序
【发布时间】:2015-04-24 02:58:08
【问题描述】:

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

【问题讨论】:

    标签: node.js command-line-interface gulp


    【解决方案1】:

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

    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');
    });
    

    【讨论】:

    • 这很好用,谢谢!我什至能够从 gulpfile.js 导出 gulp,然后从我的主节点文件运行 gulp.start('someTask')。我注意到的一件事是命令行输出不是通过这种方式来的。关于为什么会出现这种情况的任何想法?
    • 不确定你能做些什么来解决这个问题。自己没研究过。
    • 当然,只是想进行一些小修改以帮助使事情更清晰。我通过导出 gulp 解决了我的问题,然后我可以根据需要以编程方式执行 gulp。谢谢!
    猜你喜欢
    • 2012-04-01
    • 1970-01-01
    • 2019-02-02
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    相关资源
    最近更新 更多