【问题标题】:What does npm run do?npm 运行是做什么的?
【发布时间】:2018-03-14 10:31:11
【问题描述】:

命令npm run 会运行我在package.json 中设置的命令,我认为运行命令不是新的child process。在没有新 child process 的情况下,npm 如何运行命令?

【问题讨论】:

    标签: node.js process


    【解决方案1】:

    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 的节点,您可以尝试execexecsync(cmd) 作为一个简单的工作区。如果没有发现错误,这将简单地执行您的shell cmd 并返回您的代码。

    【讨论】:

    • 我想知道的是:我可以像npm run一样在nodejs中运行没有child_process的命令吗?
    • 你的问题很有误导性
    • 确实如此。这回答了最初的问题。
    猜你喜欢
    • 2017-08-20
    • 2020-02-24
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2020-03-02
    • 2014-09-16
    相关资源
    最近更新 更多