npm自定义node_modules路径

目标:

  • 告别 sudo npm install -g + 各种 EACCES 权限报错
  • 全局 npm 包(如 hexo-cli)安装到你自己的目录
  • 所有命令(hexonpmpnpm 等)能在终端直接用
  • 不污染系统 /usr/lib/node_modules/
先搞清楚几个概念:全局安装 vs 项目安装
  • 项目安装(推荐,大部分情况用这个)

    1
    2
    npm install package-name      # 安装到当前项目的 node_modules
    ./node_modules/.bin/xxx # 对应命令
    • 默认安装路径:当前项目目录/node_modules
    • 不需要 sudo,和当前项目绑定
  • 全局安装(-g,全局命令用)

    1
    npm install -g hexo-cli
    • 在 Linux 上默认装到:/usr/lib/node_modules/(或类似路径)
    • 普通用户没权限写 -> 经典 EACCES 错误

一、永久自定义全局安装目录(最推荐)

~/.npm-global 为例,这个方案适合:
常年写代码 / 常用 CLI 工具 / 想要一劳永逸 的情况

1、创建一个属于你的全局目录
1
mkdir -p ~/.npm-global
2、告诉 npm:以后全局包都装到这里
1
npm config set prefix '~/.npm-global'

‘~/.npm-global’ 输出:/home/你的用户名/.npm-global

你可以用下面命令查看当前前缀:

1
npm config get prefix
3、把全局命令目录加到 PATH 里

全局命令会被放在:

1
~/.npm-global/bin

要让 hexovuevitepnpm 这些命令能直接在终端里用,
需要把这个路径加入 PATH

Bash(大概率你用的是这个)

编辑 ~/.bashrc

1
vim ~/.bashrc

在文件末尾加一行(如果已有类似 PATH 配置,可以合并):

1
export PATH="$HOME/.npm-global/bin:$PATH"

保存后加载配置:

1
source ~/.bashrc

如果你用的是 zsh(echo $SHELL 看一下)

编辑 ~/.zshrc

1
vim ~/.zshrc

同样加:

1
export PATH="$HOME/.npm-global/bin:$PATH"

保存后:

1
source ~/.zshrc
4、现在安装 hexo-cli(示例)
1
npm install -g hexo-cli

不会再写 /usr/lib/node_modules,而是写到:

1
~/.npm-global/lib/node_modules/hexo-cli

命令在:

1
~/.npm-global/bin/hexo
5、验证
1
2
3
npm config get prefix
hexo -v # 能输出版本说明成功
which hexo # 应该指向 ~/.npm-global/bin/hexo

Windows 推荐的 npm 自定义目录方案(标准)

1
2
3
D:\NodeJS\
├─ npm-global\ ← 全局包安装位置
└─ npm-cache\npm 下载缓存

你也可以换成:

  • C:\Users\你的用户名\npm-global
  • E:\Dev\npm-global
1、设置 npm 全局安装目录(最关键)
1
npm config set prefix "D:\NodeJS\npm-global"

验证:

1
npm config get prefix
2、设置 npm 缓存目录(下载的包)
1
npm config set cache "D:\NodeJS\npm-cache"

验证:

1
npm config get cache

这一步就是你说的“npm 下载的文件放哪里

3、必须做的一步:加环境变量(否则命令不可用)

全局命令实际在这里:

1
2
D:\NodeJS\npm-global\下载的程序
└─ bin\

打开设置 > 系统 > 高级系统设置 > 环境变量 > 双击系统变量中的 Path 条目 > 新建 > 粘贴地址即可

1
D:\NodeJS\npm-global\下载的程序\bin\

二、项目本地安装 + npx(完全不需要 -g)

对于很多 CLI 工具,其实不必全局安装,可以在项目目录内安装:

1
cd	#进入项目目录

[!NOTE]

示例:express

1
npm install express --save-dev	# 一条命令即可
  • 安装路径:项目目录/node_modules/express
  • 不会污染全局,不会有权限问题
  • 做多个项目时,每个项目可以用不同版本的包

npm自定义node_modules路径
https://huishao.fun/npm自定义node_modules路径/
作者
huishao
发布于
2025年11月13日
许可协议