6月2日 01:42

.npmrc 怎么配?registry 镜像、私有包和常用配置项详解

.npmrc 是 npm 的配置文件,控制 registry 源、代理、认证信息等。分三层:全局、项目、用户级,优先级从高到低。

三层 .npmrc

文件位置作用范围优先级
项目根目录/.npmrc只对当前项目生效最高
~/.npmrc对当前用户所有项目生效
$PREFIX/etc/npmrc全局,对所有用户生效最低

项目级配置覆盖用户级,用户级覆盖全局。大多数配置写在项目级或用户级就够了。

最常用的配置

1. 切换 registry(国内开发者必备)

ini
registry=https://registry.npmmirror.com

默认的 npmjs.org 在国内经常超时。淘宝镜像 npmmirror.com 速度快且稳定。项目级 .npmrc 加这一行,团队成员都能用。

2. 私有包的 scoped registry

ini
@mycompany:registry=https://npm.mycompany.com

@mycompany scope 的包从公司私有 registry 拉取,其他包走公共 registry。不需要配置 VPN 或全局代理。

3. 认证 token

ini
//npm.mycompany.com/:_authToken=${NPM_TOKEN}

用环境变量避免把 token 写死在文件里。CI/CD 里设 NPM_TOKEN 环境变量即可。

4. 代理配置

ini
proxy=http://127.0.0.1:7890 https-proxy=http://127.0.0.1:7890

公司内网需要通过代理访问外网时设置。

其他实用配置

ini
save-exact=true # npm install 默认用精确版本号而非 ^ 前缀 package-lock=false # 不生成 package-lock.json(不推荐) audit=false # 关闭 npm audit 检查 fund=false # 关闭 npm fund 提示 legacy-peer-deps=true # 忽略 peerDependencies 冲突(npm 7+ 经常需要)

legacy-peer-deps=true 是 npm 7+ 升级后最常见的配置——npm 7 默认严格检查 peerDeps,很多老包会报冲突。加上这行回到 npm 6 的宽松模式。

查看当前生效的配置

bash
npm config list # 显示所有配置(包括来源) npm config get registry # 查看某个配置项的值 npm config edit # 直接编辑用户级 .npmrc

.npmrc 要提交到 Git 吗?

  • 项目级 .npmrc:应该提交,确保团队成员用相同的 registry 和配置。但不要包含 auth token——用环境变量代替。
  • 用户级 .npmrc:不提交,是个人偏好(代理、token 等)。
gitignore
# .gitignore .npmrc

如果项目需要共享 registry 配置,把不含敏感信息的部分提交,token 用 .npmrc + .gitignore 或环境变量处理。

标签:NPM