`npm link x` 和 `npm install /path/to/x` 的区别
Difference between `npm link x` and `npm install /path/to/x`
我以为我理解了
之间的区别
npm link x
和
npm install /local/path/to/x
最初我认为前者创建了一个到 x 的符号链接,而后者在您的项目中安装了一个单独的 x 副本,而不是对其进行符号链接。
不过,我最近发现我原来的印象是错误的,他们似乎都使用符号链接——那么这两者之间有什么区别吗?
An article on Medium 作者 Alex Mills 将其展开。
上面写着npm link x
和npm install /local/path/to/x
的区别是:
最大的区别在于npm install /local/path/x
会
运行 preinstall/postinstall 挂钩,但 npm link x
不会。
npm link
使用全局 NPM space,npm install /local/path/x
不使用。 npm link 创建一个 symlink 到 x
在全局 space 中,然后当你调用 npm link x 时
y,它创建一个 symlink 不是直接指向 x,而是指向
全局符号link。这是一个重要的区别,如果你是
使用不同的全局 node.js 版本,例如 NVM。
npm install /absolute/path/x
将改变 package.json、npm link x
没有。
要获取新的本地副本而不是 symlink,请使用 npm pack
,如下所示:
tgz="$PWD/$(npm pack)"
cd <other project>
npm install "$tgz"
您也可以使用 cp/rsync,但这不会 运行 安装挂钩或将可执行文件放在 node_modules/.bin
中......这会起作用。
npm link
npm link
npm link <folder>
以上两个命令都会在全局包中创建 <folder>
的 symlink。
现在 npm link <folder>
将在您的 node_modules
文件夹中为您当前的项目同步 link 相同的内容。这些名称将基于 package.json
中的项目名称,而不是基于您 linking
中的文件夹名称
您当前项目的package.json
不会被触及或改变
包的依赖项仍将被安装,如您在此处的代码中所见
总结一下
- 它在全局文件夹中创建一个符号link(总是)
- 它不会改变 package.json
- 它确实安装了任何缺少的依赖项
npm 安装
现在npm install <folder>
和这个有点不一样
- 它不会在全局文件夹中创建符号link
- 它更改并添加了对 package.json
的引用
- 它创建一个 symlink 到原始文件夹
我以为我理解了
之间的区别npm link x
和
npm install /local/path/to/x
最初我认为前者创建了一个到 x 的符号链接,而后者在您的项目中安装了一个单独的 x 副本,而不是对其进行符号链接。
不过,我最近发现我原来的印象是错误的,他们似乎都使用符号链接——那么这两者之间有什么区别吗?
An article on Medium 作者 Alex Mills 将其展开。
上面写着npm link x
和npm install /local/path/to/x
的区别是:
最大的区别在于
npm install /local/path/x
会 运行 preinstall/postinstall 挂钩,但npm link x
不会。npm link
使用全局 NPM space,npm install /local/path/x
不使用。 npm link 创建一个 symlink 到 x 在全局 space 中,然后当你调用 npm link x 时 y,它创建一个 symlink 不是直接指向 x,而是指向 全局符号link。这是一个重要的区别,如果你是 使用不同的全局 node.js 版本,例如 NVM。npm install /absolute/path/x
将改变 package.json、npm link x
没有。
要获取新的本地副本而不是 symlink,请使用 npm pack
,如下所示:
tgz="$PWD/$(npm pack)"
cd <other project>
npm install "$tgz"
您也可以使用 cp/rsync,但这不会 运行 安装挂钩或将可执行文件放在 node_modules/.bin
中......这会起作用。
npm link
npm link
npm link <folder>
以上两个命令都会在全局包中创建 <folder>
的 symlink。
现在 npm link <folder>
将在您的 node_modules
文件夹中为您当前的项目同步 link 相同的内容。这些名称将基于 package.json
中的项目名称,而不是基于您 linking
您当前项目的package.json
不会被触及或改变
包的依赖项仍将被安装,如您在此处的代码中所见
总结一下
- 它在全局文件夹中创建一个符号link(总是)
- 它不会改变 package.json
- 它确实安装了任何缺少的依赖项
npm 安装
现在npm install <folder>
和这个有点不一样
- 它不会在全局文件夹中创建符号link
- 它更改并添加了对 package.json 的引用
- 它创建一个 symlink 到原始文件夹