npm 包的安装位置

npm 包的安装位置

技术背景

在前端开发中,npm(Node Package Manager)是常用的包管理工具,它可以帮助开发者轻松地安装、管理和分享代码包。了解 npm 包的安装位置,有助于开发者更好地管理项目依赖、排查问题以及配置环境。

实现步骤

全局库(Global libraries)

  1. 查看全局库安装位置
    • 运行 npm list -g 可以查看已安装的全局库及其位置。
    • 使用 npm list -g | head -1 可截断输出,仅显示路径。
    • 若只想显示主包而非其附属子包,可使用 npm list --depth=0;要获取全局安装的包,添加 -g 选项,即 npm list -g --depth=0
  2. 不同系统的全局安装位置
    • Unix 系统:通常安装在 /usr/local/lib/node/usr/local/lib/node_modules。若设置了 NODE_PATH 环境变量为该路径,Node 可以找到这些模块。
    • Windows XP%USERPROFILE%\AppData\npm\node_modules
    • Windows 7、8 和 10%USERPROFILE%\AppData\Roaming\npm\node_modules

非全局库(Non - global libraries)

非全局库安装在当前目录的 node_modules 子文件夹中。运行 npm list 可查看当前位置已安装的非全局库。

安装选项

  • 全局安装:使用 -g 选项,如 npm install -g pm2,pm2 将被全局安装,通常位于 /usr/local/lib/node_modules(可使用 npm root -g 检查位置)。
  • 本地安装:如 npm install pm2,pm2 将被本地安装,通常位于当前目录的 /node_modules 中。

查看安装目录

  • npm root 可查看 npm 包的有效安装目录。若当前工作目录是 Node 包或其子目录,npm root 将显示本地安装目录;npm root -g 无论当前工作目录如何,都会显示全局安装根目录。

更改全局模块路径

可以通过以下方式更改全局模块路径:

  • 使用 npm config edit 编辑配置文件,在文件中添加 prefix = /my/npm/global/modules/prefix
  • 或者使用 npm config set prefix /my/npm/global/modules/prefix

核心代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看全局库
npm list -g
# 截断输出仅显示路径
npm list -g | head -1
# 仅显示主包
npm list -g --depth=0
# 全局安装
npm install -g pm2
# 本地安装
npm install pm2
# 查看全局安装根目录
npm root -g
# 查看本地安装目录
npm root
# 获取 prefix 配置值
npm config get prefix
# 更改 prefix 配置值
npm config set prefix /my/npm/global/modules/prefix

最佳实践

  • 对于项目特定的依赖,使用本地安装,这样可以确保项目的独立性和可移植性。
  • 对于需要在系统范围内使用的工具,如 pm2webpack-cli 等,使用全局安装。
  • 定期清理 npm 缓存,避免占用过多磁盘空间,可使用 npm cache clean --force

常见问题

  1. 全局命令无法识别:在 Windows 10 中,若全局安装的命令无法识别,可通过以下步骤解决:
    • 运行 npm config edit
    • prefix 更改为 C:\Users\username\AppData\Roaming\npm
    • 将该路径添加到系统路径变量中。
    • 重新使用 -g 选项安装包。
  2. 找不到 npm 安装的可执行文件:可以使用 npm binnpm bin -g 查找。
  3. 不同用户权限下配置文件使用问题:全局安装使用 sudo su 时,可能会使用 /root/.npmrc;本地不使用 sudo 时,使用 /home/youruser/.npmrc。需注意配置文件的使用,避免出现路径不一致的问题。