6月2日 01:42
.npmrc 怎么配?registry 镜像、私有包和常用配置项详解
.npmrc 是 npm 的配置文件,控制 registry 源、代理、认证信息等。分三层:全局、项目、用户级,优先级从高到低。
三层 .npmrc
| 文件位置 | 作用范围 | 优先级 |
|---|---|---|
| 项目根目录/.npmrc | 只对当前项目生效 | 最高 |
| ~/.npmrc | 对当前用户所有项目生效 | 中 |
| $PREFIX/etc/npmrc | 全局,对所有用户生效 | 最低 |
项目级配置覆盖用户级,用户级覆盖全局。大多数配置写在项目级或用户级就够了。
最常用的配置
1. 切换 registry(国内开发者必备)
iniregistry=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. 代理配置
iniproxy=http://127.0.0.1:7890 https-proxy=http://127.0.0.1:7890
公司内网需要通过代理访问外网时设置。
其他实用配置
inisave-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 的宽松模式。
查看当前生效的配置
bashnpm 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 或环境变量处理。