【问题标题】:Do dependencies get downloaded before or after the npm preinstall script?依赖项是在 npm 预安装脚本之前还是之后下载的?
【发布时间】:2026-01-26 22:30:01
【问题描述】:

NPM 脚本状态的文档:

preinstall:在安装包之前运行

但这会发生在下载依赖项之前还是之后?

也就是说,以下哪个是正确的:

  1. 下载依赖项
  2. 预安装脚本运行
  3. 安装

  1. 预安装脚本运行
  2. 安装
    1. 在安装过程中下载依赖项

我看不到 npm script docs 涵盖的这一点,但它可能已在其他地方记录。

【问题讨论】:

  • 您是否看到表明它在安装过程的中途而不是之前运行的行为?通常,pre-hook 严格前缀的脚本之前运行,并且下载是安装脚本的一部分。
  • @jonrsharpe 知道 dep 下载是安装的一部分,这是我问题的答案。特别是一位同事想要在不运行脚本的情况下下载依赖项,因此他们将 npm i dep@1.0.1 --ignore-scripts 放在预安装中,并尝试将其从主要依赖项下载中排除。如果情况 1 是这种情况,那将行不通。
  • 有人能帮忙解释一下我的问题有什么不清楚的地方吗?

标签: npm npm-install npm-scripts


【解决方案1】:

我也搜索了这个问题的答案,但没有找到任何概述确切过程的文档。

但是,从测试来看,这似乎取决于。如果您在包目录中运行npm linknpm install,它将下载依赖项并运行脚本,但顺序如下:

  1. 运行预安装脚本
  2. 下载依赖项
  3. 运行安装后脚本

因此,如果您的预安装脚本使用依赖项,它将失败。

但是如果你从另一个文件夹运行npm install <package>npm install <path/to/local/folder>,它会按照这个顺序执行:

  1. 下载或链接包 + 所有依赖项
  2. 运行预安装脚本
  3. 运行安装后脚本

【讨论】:

    最近更新 更多