npm link 使用介绍

发布于 2024-07-08  151 次阅读


npm link 是一个非常实用的 npm 命令,它允许开发者在本地开发和测试 Node.js 模块时,将模块链接到其他项目中,而不必每次更改都发布和安装模块。这个命令可以大大简化开发流程,尤其是当你正在同时开发多个相互依赖的模块时。

工作原理

npm link 创建一个符号链接(symlink),即一个指向包目录的指针。这使得在你的本地开发环境中,一个项目可以直接使用另一个项目的最新代码,而无需发布和安装最新版本。

使用步骤

1. 链接一个包

假设你正在开发两个项目:project-aproject-bproject-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-bnode_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补充

  1. 通过 npm root -g 可以定位到当前使用的 npm 的全局 node_modules路径;
  2. 如果使用了 nvm ,需要注意不同版本对应的是完全隔离的不同的 npm 和相应的 node_modules库,在 npm link 和使用 npm link XXX 的时候要使用统一的版本,如都使用 v18 的 node 环境:nvm use 18,否则 link 不到。
  3. 作为仓库的项目中要 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

A Student on the way to full stack of Web3.