Appearance
npm link 使用指南
第一步:安装依赖
- 安装供应包(my-lib)的依赖:
bash
cd my-lib
npm install
- 安装消费包(my-app)的依赖:
bash
cd ../my-app
npm install
第二步:链接包
- 在供应包(my-lib)目录中创建链接:
bash
cd ../my-lib
npm link
npm run build # 编译TypeScript代码
- 在消费包(my-app)目录中链接到供应包:
bash
cd ../my-app
npm link my-lib
第三步:测试链接
- 构建并运行消费包:
bash
npm run build
npm start
看到来自 my-lib 的函数输出。
第四步:验证实时更新
- 修改 my-lib 库中的代码(例如,修改 greet 函数中的返回信息):
typescript
// my-lib/src/index.ts
export function greet(name: string): string {
return `你好啊,${name}!这是修改后的问候语`
}
- 重新编译库:
bash
cd ../my-lib
npm run build
- 重新运行应用程序:
bash
cd ../my-app
npm start
会看到更改立即生效,无需重新安装或发布包。
npm link 的工作原理
npm link
创建了一个从全局 node_modules 目录到当前包目录的符号链接。
当在另一个项目中运行 npm link package-name
时,npm 将创建一个从该项目的 node_modules 目录到全局链接包的符号链接。
这样,可以立即看到对链接包所做的更改,而无需每次都重新发布和安装。
清理链接
完成开发后,可以通过以下命令清理链接:
bash
# 在消费包目录中
npm unlink my-lib
npm install # 恢复到正常安装
# 在供应包目录中
npm unlink -g
查看是否清理
bash
npm root -g
cd <root-path>
ls -l node_modules
对于 CLI
对于 CLI 工具,使用 npm link 时会自动将其软链接到全局 bin 目录下。这是 npm link 的一个重要特性。 当在 package.json 中添加 bin 字段后,npm link 会执行两项操作:
- 它会在全局 node_modules 目录中创建一个指向项目的符号链接(与普通 npm 包相同)
- 它还会在全局 bin 目录中创建指向包的可执行文件的符号链接
例如, 在 my-lib 中添加 bin 字段:
json
"bin": {
"my-lib-cli": "./dist/cli.js"
}
运行 npm link
后,可以在全局 bin 目录中找到 my-lib-cli 命令:
bash
ls -l $(npm root -g)/bin
在使用npm unlink -g
时,npm 会删除全局 bin 目录中和 node_modules 目录中 my-lib 的链接。