npm link
是一个非常实用的 npm 命令,它允许开发者在本地开发和测试 Node.js 模块时,将模块链接到其他项目中,而不必每次更改都发布和安装模块。这个命令可以大大简化开发流程,尤其是当你正在同时开发多个相互依赖的模块时。
工作原理
npm link
创建一个符号链接(symlink),即一个指向包目录的指针。这使得在你的本地开发环境中,一个项目可以直接使用另一个项目的最新代码,而无需发布和安装最新版本。
使用步骤
1. 链接一个包
假设你正在开发两个项目:project-a
和 project-b
。project-a
是一个库,你希望在开发 project-b
时使用它。
首先,在 project-a
的根目录下运行以下命令:
cd path/to/project-a
npm link
这个命令会在全局 npm
包目录中创建一个到 project-a
的符号链接。
2. 在另一个项目中使用链接
然后,在 project-b
中,你可以链接到刚刚在全局注册的 project-a
:
cd path/to/project-b
npm link project-a
这会在 project-b
的 node_modules
目录中创建一个到全局 npm
包目录中 project-a
符号链接的符号链接。
实际应用
这种方式非常适合以下几种情况:
- 本地包开发:当你正在开发一个 npm 包,并希望在实际项目中测试它而不是每次小改动后都发布新版本。
- 应用于多个项目:当你有一个通用库被多个项目依赖,且需要频繁进行更改时。
- 团队合作:当多个开发者正在同一个项目上工作,并且需要共享和测试模块。
注意事项
- 全局依赖:
npm link
在全局npm
目录创建符号链接,这可能导致不同项目之间的依赖冲突。 - 环境差异:链接的包可能在不同的开发环境中表现不同,尤其是在有操作系统特定代码时。
- 清理链接:开发完成后,你可以通过
npm unlink
命令从项目中删除链接,并且也应该在全局包目录中取消链接,避免未来可能的冲突。
# 在project-b中解除链接
cd path/to/project-b
npm unlink project-a
# 在全局npm目录中解除链接
cd path/to/project-a
npm unlink
使用 npm link
可以显著加速开发流程,但也需要注意管理链接和依赖,以避免潜在的问题。
2024.7.16补充
- 通过
npm root -g
可以定位到当前使用的npm
的全局node_modules
路径; - 如果使用了
nvm
,需要注意不同版本对应的是完全隔离的不同的npm
和相应的node_modules
库,在npm link
和使用npm link XXX
的时候要使用统一的版本,如都使用 v18 的 node 环境:nvm use 18
,否则 link 不到。 - 作为仓库的项目中要
build
有了dist
等前端静态资源成果物之后才能用,别忘了npm build
。
2024.8.26备忘录迁移
pnpm link 的使用
check it:
pnpm list --global
uninstall:
sudo pnpm uninstall --global <package>
link again:
sudo pnpm link --global
然后用的时候,在项目里使用
sudo pnpm link —global <package>
这里的-global是单杠!!!!!!两个不一样!坑!
yarn link 的使用
与 npm link
的使用方法相同。
yarn link
yarn link @xxx
Comments NOTHING