npm link介绍

半兽人 发表于: 2025-11-12   最后更新时间: 2025-11-12 10:45:04  
{{totalSubscript}} 订阅, 14 游览

npm link 是一个专门为本地开发 npm 包(比如你做的组件库)设计的工具。
一句话解释就是:

它在不同项目之间创建“符号链接(symlink)”,让你在不发布到 npm 的情况下,本地实时使用这个包。

一、为什么要用 npm link

当你在开发一个组件库时(例如 ui-library),通常想在另一个项目(例如 web-app)里实时测试它的功能

但是:

  • 你又不想每次都 npm publish 到 npm;
  • 也不想每次改动都重新打包、重新安装。

npm link 就是为了解决这个问题的。

它可以:

  • 把组件库“注册”到全局环境
  • 然后在业务项目里“链接”到它;
  • 最终效果:业务项目的 node_modules/ui-library 实际上是一个指向你本地源码的软链接

二、怎么工作的(图解式思维)

以你的目录为例:

demo/
  ui-library/
  web-app/

执行流程如下:

  1. 在组件库里运行:

    cd ui-library
    npm link
    
    • npm 会在全局 node_modules(例如 /usr/local/lib/node_modules/)里注册一个符号链接指向你的 ui-library
  2. 在业务项目里运行:

    cd ../web-app
    npm link ui-library
    
    • 这会在 web-app/node_modules/ 下再创建一个符号链接,指向全局的那个 ui-library 链接。

最终形成两级链接:

web-app/node_modules/ui-library -> /usr/local/lib/node_modules/ui-library -> /Users/weiwei/workspace/project/ui-library

三、效果

  • 现在你可以在 web-app 中直接写:

    import { Button } from 'ui-library';
    
  • 任何在 ui-library/src 里的改动都会立刻反映到 web-app 里(不需要重新安装依赖)。
  • 适合本地组件库开发和联调

四、常见命令

操作 命令
创建全局 link npm link(在组件库目录执行)
链接到业务项目 npm link <包名>(在 web-app 里执行)
查看全局链接 npm ls -g --link=true
取消项目链接 npm unlink <包名>
删除全局链接 npm unlink -g <包名>

五、优缺点总结

优点:

  • 改动组件库代码可实时反映,不需安装或打包。
  • 非常适合本地开发和调试组件库。
  • 模拟 npm 包发布后的使用方式。

缺点:

  • 依赖全局环境(不同机器路径不一样)。
  • 可能需要 sudo 权限。
  • 团队其他人拿不到 link 环境(每个人要自己执行 link)。
  • 不适合 CI/CD 或生产。

六、替代方案

  • file: 本地引用(最简单,适合稳定调试)
  • pnpm workspace / yarn workspaces(更专业,团队项目推荐)

一句话总结:

npm link 就像给你的组件库打了一根“电缆”,把它直接接到另一个项目的 node_modules 里,让你能实时调试而不用重新安装。

更新于 2025-11-12
在线,1小时前登录

查看Storybook更多相关的文章或提一个关于Storybook的问题,也可以与我们一起分享文章