我对npm link和npm link <pkg>所做的事情的理解基本上与在文件中描述的一样
包连接是一个两步的过程. 首先,包文件夹中的npm链接将在全局文件夹{前缀}/lib/node_modules/中创建一个符号链接,该链接链接到执行npm链接命令的包。它还将将包中的任何回收站链接到{前缀}/bin/{name}。注意,npm链接使用全局前缀(请参见npm前缀-g的值)。 接下来,在其他位置,npm链接包名将创建一个符号链接,从全局安装的包名到当前文件夹的node_node/。
因此,我感到困惑的是,在包链接的第二步(例如,npm link my-package@3.1.4)中指定版本意味着什么。链接包的版本不完全取决于链接目录的内容吗?我不认为npm link的文档解释了这一点。
发布于 2022-04-04 11:21:38
据我所知,npm链接也安装了任何缺少的依赖项。它确保所有最新版本的依赖项都链接到全局文件夹,而非最新版本则在现场安装,但其深度依赖项位于自己的node_modules中。安装或更新给定的项目依赖项。如果没有指定依赖版本,则假设package.json或最新版本中的依赖版本。因此,如果没有指定依赖版本,则它将完全由链接目录的内容决定。
发布于 2022-04-04 17:47:28
使用link命令可以知道两种不同的行为。
第一个问题是,当您想要测试一个本地包时,实际上运行npm link ../../my-package就足够了,并且将从包中的package.json文件中确定版本。
第二个,对应于一种情况,您希望在不影响package.json的情况下测试远程包的特定版本。
假设您想在不更新moment@2.29.2的情况下安装package.json,那么可以运行
npm link moment@2.29.2它将全局安装该包,然后在您的node_modules中为该包创建一个符号链接。
https://stackoverflow.com/questions/71579974
复制相似问题