npm link用于在Mac上为本地Node模块创建全局符号链接:先在模块目录执行npm link生成全局symlink,再在项目目录执行npm link 建立项目级引用,支持实时调试;遇EACCES需重设npm prefix至用户目录并更新PATH。
在 mac 上为本地 node 模块创建全局符号链接,核心就是用 npm link 命令。它不安装包,而是建立指向你本地代码的符号链接(symlink),让其他项目能像使用已发布包一样直接引用、实时调试。
第一步:在包目录中执行 npm link
进入你的本地模块根目录(确保有有效的 package.json,且其中 name 字段已定义):
- 运行
npm link - npm 会读取
name字段(比如"my-utils"),然后在全局node_modules目录下创建一个同名符号链接,指向当前文件夹 - 你可以用
npm config get prefix查全局前缀,再加/lib/node_modules得到实际路径,例如:~/.npm-global/lib/node_modules/my-utils → /path/to/my-utils
第二步:在项目中链接这个全局包
切换到你要使用该模块的项目目录:
根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。
- 运行
npm link my-utils(名字必须和package.json中的name完全一致,含作用域如@org/my-utils也要写全) - npm 会在该项目的
node_modules下创建符号链接:node_modules/my-utils → ~/.npm-global/lib/node_modules/my-utils - 此时
require('my-utils')或import就能直接加载你本地修改后的代码
注意权限与路径配置
如果你没改过 npm 全局路径,默认会尝试写入 /usr/local/lib/node_modules,而 macOS 通常禁止普通用户写这个位置——这会导致 npm link 报 EACCES 错误。解决方法是提前重定向全局路径:
- 新建用户级目录:
mkdir -p ~/.npm-global - 设置新前缀:
npm config set prefix '~/.npm-global' - 把
~/.npm-global/bin加进PATH(编辑~/.zshrc,加一行export PATH="$HOME/.npm-global/bin:$PATH",然后source ~/.zshrc) - 验证:
npm config get prefix应输出/Users/xxx/.npm-global
怎么取消链接
调试完成或需要清理时:
- 在项目目录运行:
npm unlink my-utils(删掉项目内的符号链接) - 回到模块目录运行:
npm unlink(删掉全局符号链接) - 两者都执行完,就彻底解除了链接关系

















