npm link 本地调试的核心是建立软链接实现源码实时生效:先在包目录执行 npm link 创建全局符号链接,再在项目中运行 npm link my-pkg 创建项目级软链接,修改源码后需注意打包工具监听限制及 React 等单例冲突问题。

用 npm link 本地调试 npm 包,核心是建立软链接(symlink),让项目直接引用你本地开发中的源码,改完保存就能实时生效,不用反复发布、安装。
第一步:在包目录下执行 npm link
进入你要调试的 npm 包根目录(即有 package.json 的地方),运行:
npm link
这会在全局 node_modules(如 macOS 是 /usr/local/lib/node_modules/)中创建一个指向当前目录的符号链接,名称取自 package.json 中的 name 字段(含作用域也要带,比如 @org/my-pkg)。
注意:如果提示权限错误,macOS/Linux 可加 sudo npm link;Windows 一般无需 sudo。
第二步:在项目中 link 对应包名
切换到你正在开发的应用项目目录,运行:
npm link my-pkg(把 my-pkg 换成你包的 name)
这会在当前项目的 node_modules 下创建一个同名软链接,它会先指向全局链接,再穿透到你的源码目录。
验证是否成功:打开项目 node_modules/my-pkg,看到文件夹图标带箭头(macOS Finder)或执行 ls -la node_modules/my-pkg 显示 -> 符号,就说明链接成功。
第三步:修改源码并观察效果
此时你在包源码里任意修改(比如改个 console.log 或函数返回值),保存后,在项目中运行(如 npm start 或 node index.js)就能立刻看到变化。
但要注意:
- 如果项目用了 Webpack/Vite 等打包工具,需重启 dev server —— 它们通常不会监听 symlink 目录下的文件变更;
- 若包和项目都依赖 React、Vue 等单例敏感库,可能出现
Invalid hook call错误,这时需确保它们共用同一份react实例(可通过resolve.alias或peerDependencies约束); - ESM 项目中,确保包的
package.json正确声明"type": "module"或导出字段匹配导入方式。
清理链接:调试完记得 unlink
退出调试时,建议解除链接,避免影响其他项目:
在项目目录下运行:npm unlink my-pkg(或 npm uninstall my-pkg)
在包目录下运行:npm unlink(不带参数,等价于 npm unlink my-pkg)
这样全局和项目中的软链接都会被移除,恢复成普通依赖状态。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











