该命令npm run将运行我在 package.json 中设置的命令,并且我认为它不会新child process运行该命令。npm 如何在没有 new a 的情况下运行命令child process?
dam*_*j07 17
如果您要问的话, 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" }
}
Run Code Online (Sandbox Code Playgroud)
现在,如果您执行npm run test,npm 将简单地检查 package.json 脚本部分中的“test”键,并根据您的操作系统在 shell 或 cmd.exe 中执行该命令。
如果您尚未全局安装 mocha,该命令将在控制台本身中显示错误,或者如果该文件mytest.js不存在,CLI 将抛出一个错误,类似于仅键入mocha ./tests/unit/mytest.json
这一段来自npm 文档,非常不言自明。
运行脚本的实际 shell 取决于平台。默认情况下,在类 Unix 系统上它是 /bin/sh 命令,在 Windows 上它是 cmd.exe。/bin/sh 引用的实际 shell 也取决于系统。从 npm@5.1.0 开始,您可以使用 script-shell 配置自定义 shell。
更新:根据评论中的响应,如果您想通过执行 CLI 命令。如果没有发现错误,child_process您可以尝试在不使用 api 的情况下使用 .nodeexec或作为简单的解决方法。这将简单地执行您的 shell cmd 并返回到您的代码。execsync(cmd)