NPM - 脚本 - 它们如何工作?

NPM - Scripts - How Do They Work?

我无法理解脚本在 package.json 中是如何 运行 的,希望能为我们这些新手提供一些见解。

它们是 bash 脚本吗 运行 由节点加载了各种 dependencies

如果是,那么它如何处理javascript代码?

Is it the case that they are bash scripts

that are run by node

不,它们是 运行 by sh

having loaded the various dependencies?

不,没有加载任何 js 文件,npm 唯一为您做的就是 prepare the environment。除其他外,它将 ./node_modules/.bin 添加到 PATH 以便您可以立即调用已安装的模块。

当你 运行 npm run-script whatever 时,这就是 npm 所做的:

  • package.json
  • 读取相应的命令行
  • 准备环境
  • 调用 sh(或 comspec on win)并给它命令和环境。这里没有什么大魔法。

这可能不是 100% 准确,所以我恳请其他更有资格的专家插话。

NPM 是一个程序,作为 Node.JS 环境的一部分安装。它的两个主要用途(如 here 所述)是搜索 node.js 包和安装 node.js 包。

但是,NPM 也能够理解 "simple"(相对术语)脚本。

当您在 package.json 中编写脚本并发出 NPM 命令时,例如 "npm start",NPM 将读取并解释该脚本。 NPM 然后在您的 node_modules 结构中搜索附带的二进制文件,并使用必要的启动参数执行该二进制文件。

一个例子是

"test": "mocha --reporter spec test"

当您发出 "npm test" 时,NPM 将在您的 node_modules 结构中查找 mocha 二进制文件。 NPM 发现 mocha 发起调用,传递 reporter 命令 arg (--reporter spec) 和测试要读取和执行的文件的名称。