【问题标题】:Passing CLI arguments through gulp-nodemon通过 gulp-nodemon 传递 CLI 参数
【发布时间】:2016-08-07 07:33:44
【问题描述】:

我正在使用 npm 包 gulp-nodemon 来启动我的网络服务器。

我遇到的问题是我无法将 CLI 参数传递给我的服务器脚本。

我想写这样的东西:

gulp --argument1 value1

然后nodemon应该调用coffee server.coffee --argument1 value1

我当前的 nodemon 任务:

# nodemon development server
gulp.task 'nodemonServer',  () ->
  nodemon({
    script: 'server.coffee'
    ext: 'coffee'
    watch: ['server/', 'server.coffee']
    env: { 'NODE_ENV': 'development' }
  })
  .on 'crash', () ->
    notifyServerError()

我试着写script: 'server.coffee --argument1 value1' 但我收到一个奇怪的错误: File not found: C:\Users\user\projectRoot\"server.coffee

是的,文件路径中带有“。这是日志:

[13:13:10] [nodemon] starting `coffee.cmd "server.coffee --argument1 value1"`
File not found: C:\Users\user\projectRoot\"server.coffee

谢谢。

【问题讨论】:

  • 参数是固定的还是你会提供不同的(或不提供)参数?
  • @RahatMahbub 我想将给 gulp 的参数原样传递给服务器脚本,gulp --argument1 value1 结果为 coffee server.coffee --argument1 value1
  • 如果参数数量有限,yargs 可用于获取 arg 和 value 并有条件地将 nodemon 作为 nodeArgs 传递。

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


【解决方案1】:

使用argscoffee 命令传递任何参数。这是在脚本文件名之后传递的参数。

使用exec 传递任何咖啡选项以及coffee 可执行文件。这些是在脚本文件名之前传递的。

var gulp = require('gulp');
var nodemon = require('gulp-nodemon');
gulp.task('nodemonServer', function () {
  nodemon({
    script: 'server.coffee',
    exec: 'coffee -p',
    args: ['--argument','value1'],
    ext: 'coffee'
  , env: { 'NODE_ENV': 'development' }
  })
})

要查看nodemon实际使用的命令,请使用DEBUG=nodemon

DEBUG=nodemon gulp nodemonServer

哪些日志:

  nodemon bus new listener: reset (0) +0ms
  nodemon bus new listener: reset (0) +6ms
  ...
[13:47:20] [nodemon] starting `coffee -p server.coffee --arguments value1`
  nodemon spawning +0ms coffee -p server.coffee --arguments value1

【讨论】:

    【解决方案2】:

    根据gulp-nodemon存储库中的一些示例,您可以使用:

    nodeArgs: ['--some-arg']

    例如:

    # nodemon development server
    gulp.task 'nodemonServer',  () ->
    
      nodemon({
        script: 'server.coffee'
        ext: 'coffee'
        watch: ['server/', 'server.coffee']
        env: { 'NODE_ENV': 'development' }
        nodeArgs: ['--argument1', 'value1']
      })
    
      .on 'crash', () ->
        notifyServerError()
    

    来源:Example gulpfile from gulp-nodemon

    【讨论】:

    • 遗憾的是,这仅适用于传递给节点可执行文件的参数,而不是服务器脚本本身..
    猜你喜欢
    • 2015-10-05
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    相关资源
    最近更新 更多