在产卵的NodeJS捆绑shell命令(Bundling shell commands in Nod

2019-10-17 11:16发布

我想运行像命令NODE_ENV=production node servercd ~/app/cms; npm test cd ~/app/cms; npm test用的NodeJS重生

首先可以实现

process.env.NODE_ENV = 'production'
start = spawn 'node', ['server'], process.env

但我怎么能实现第二?

更新 :如果有人有类似的问题,这是我在CoffeeScript的例子:

testCode = ->
    testCore = spawn 'npm', ['test']
    testCore.stderr.on 'data', (data) -> console.log() process.stderr.write data.toString()
    testCore.stdout.on 'data', (data) -> print data.toString()
    testCore.on 'exit', ->
        path = require 'path'
        process.chdir path.join(__dirname, "app", "linkParser")
        testModule = spawn 'npm', ['test']
        testModule.stderr.on 'data', (data) -> process.stderr.write data.toString()
        testModule.stdout.on 'data', (data) -> print data.toString()

Answer 1:

path = require "path"
process.chdir path.join(process.env.HOME, "app", "cms")
spawn "npm", "test"

http://nodejs.org/docs/latest/api/all.html#all_process_chdir_directory



Answer 2:

我收到了ENOENT试图调用错误cd从子进程。

@Peter里昂答案是有帮助的。 阅读产生更多的文档后,我决定用下面去,以保持父进程的工作目录清洁:

CoffeeScript的:

spawn "npm", "test",
  cwd: path.join(process.env.HOME, "app", "cms")

JavaScript的:

spawn("npm", "test", { cwd: path.join(process.env.HOME, "app", "cms") });

根据经验,我发现你也可以通过只是字符串:

CoffeeScript的:

spawn "npm", "test", path.join(process.env.HOME, "app", "cms")

JavaScript的:

spawn("npm", "test", path.join(process.env.HOME, "app", "cms"));

退房产卵文档获取更多信息。



文章来源: Bundling shell commands in NodeJs spawn
标签: node.js shell