安装包时,npm 或 yarn 是否从 VCS 克隆和 运行 构建脚本?

Does npm or yarn clone from VCS and run build script when install a package?

我正在研究npm,我有一些问题。

  1. npm 从哪里获取包?即当 运行 npm install <package-name>yarn add <package-name>.

  2. 获取包时,npm 获取原始包还是获取然后构建它(如运行 package.json 中编写的构建脚本)?

  3. 发布包时,需要package.jsonrepository字段?

  4. 用于发布的存储库和 pacakge.json 中的存储库可以不同吗?

回答您的问题:

  1. npm 从 NPM 包注册表中获取它们,yarn 也是如此,但 Yarn 可能在它前面有一个代理注册表。通常,您可以说,这两种工具默认都从 https://npmjs.com 获取它们的包。
  2. 它获取发布时的包(所以,简而言之,答案是 "raw")。构建取决于发布者并且取决于包的类型。通常,某些 prepublish 任务会在 dist/(或包中的任何其他位置)中构建某些内容,并且这些文件也随其他人下载的包一起提供。安装包后很少发生构建(这里的例外是使用 node-gyp 构建的库包装包)。
  3. 据我所知,存储库字段不是必需的,但最好包含它(例如,它将显示在 NPM 网站上)。
  4. 从技术上讲,是的。您可以在 repository 中指定任何存储库,但指定一个不是包源的存储库没有多大意义。

如果您总体上想详细了解 npm 的工作原理,请在 https://docs.npmjs.com/

查看它的文档