【发布时间】:2018-03-14 10:31:11
【问题描述】:
命令npm run 会运行我在package.json 中设置的命令,我认为运行命令不是新的child process。在没有新 child process 的情况下,npm 如何运行命令?
【问题讨论】:
命令npm run 会运行我在package.json 中设置的命令,我认为运行命令不是新的child process。在没有新 child process 的情况下,npm 如何运行命令?
【问题讨论】:
Npm run 与节点子进程无关,如果这是您所要求的。 npm run 是 npm CLI 提供的命令,它允许实例化 shell 并执行项目的 package.json 文件中提供的命令。
考虑到这是你的 package.json :
{
"name": "my-awesome-package",
"version": "1.0.0",
"script" : { "test" : "mocha ./test/unit/mytest.js" }
}
现在,如果您执行npm run test,npm 将简单地检查 package.json 脚本部分的“test”键,并根据您的操作系统在 shell 或 cmd.exe 中执行该命令。
如果您尚未全局安装 mocha,该命令将在控制台本身显示错误,或者如果文件 mytest.js 不存在,则 CLI 将抛出类似于仅键入 mocha ./tests/unit/mytest.json 的错误
npm docs 中的这一段非常不言自明。
运行脚本的实际 shell 取决于平台。经过 默认,在类 Unix 系统上是 /bin/sh 命令,在 Windows 上是 是cmd.exe。 /bin/sh 所指的实际外壳也取决于 系统上。从 npm@5.1.0 开始,您可以使用 脚本外壳配置。
更新:根据评论中的响应,如果您想通过执行 CLI 命令。不使用child_process api 的节点,您可以尝试exec 或execsync(cmd) 作为一个简单的工作区。如果没有发现错误,这将简单地执行您的shell cmd 并返回您的代码。
【讨论】: