npm install 没有为本地依赖项创建符号链接

Kil*_*ler 4 node.js npm

据我从 npm 文档中了解到,npm i /path/to/mylib通常应该创建node_modules/mylib-> /path/to/mylib. 但是,当我运行npm i上面的命令时,npm 不会创建符号链接,而是实际上在node_modules. 尽管如此,我package.json还是会读"mylib" : "file:/path/to/mylib"

我希望它是一个符号链接,因为我仍在处理我在该项目中添加的库。

我怎样才能制作这些符号链接?

  • 节点版本 16.15.0
  • npm 版本 9.1.1

Nia*_*all 6

改变

这是 npm v9 的一个重大变化。发行说明可在此处获取。

在选项中包含此详细信息;

install-links配置默认为“true”

特别是,这里的Node v18.4 版本中有这样一条注释,激励了这一变化;

说明: install-links 是列表中唯一对软件包安装有影响的配置或命令。我们通过此更改修复了预发布期间出现的许多问题。它还将仅应用于没有 package-lock.json 文件创建的新包树。任何使用现有锁定文件的安装都不会更改。

在我们的用例中,这破坏了构建并改变了功能的预期用途。

如果设置为false,则恢复“当前/旧/之前的 v9”行为。

恢复行为

根据用例,似乎有两种选择可供考虑;

  • 将选项添加--install-links=false到命令行。适合单一用例。
  • 将该行添加install-links=false到项目根目录中的 .npmrc 文件中。似乎是 CI/CD 环境的更好选择。

注意:包锁定文件格式可能必须是版本 3(或更高版本)才能使上述功能正常工作。