你知道 npmrc 文档吗? ---- npmrc 关键作用介绍

你知道 npmrc 文档吗? ---- npmrc 关键作用介绍

你知道 npmrc 文档吗? ---- npmrc 关键作用介绍

.npmrc 是 npm 的配置文件。rc 是 registry config 缩写。

npm 在执行命令时,会读取里面的配置,然后执行特定的行为,通过它可改变 npm 的默认行为,比如下载精确版本的 npm 包,从某个 npm 源的下载依赖等。

4.npmrc 文件,npm 会依次读取这些文件,后面的文件会覆盖前面的文件的配置。

  1. 项目级别的 .npmrc 文件,在 package.json 文件所在的目录。
  2. 用户级别的 .npmrc 文件,在用户的根目录。通过 npm config get userconfig 查看。
  3. 全局级别的 .npmrc 文件, 在 npm 的安装目录下。通过 npm config get globalconfig 查看。
  4. 内置的 .npmrc 文件,npm 自带的配置文件,无法修改,基本不会用到。

主要关注项目级别的 .npmrc 文件和用户级别的 .npmrc 文件。

一个典型的配置:

bash 复制代码
# save-exact 的优先级更加高
# save-exact=true
# 相似版本
save-prefix=~
# 从淘宝镜像下载
registry=https://registry.npmmirror.com
# 指定 node-sass 镜像 提高下载速度
sass_binary_site=https://npmmirror.com/mirrors/node-sass
electron_mirror=https://npmmirror.com/mirrors/electron/
electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/
# 详细日志 常用于调试
loglevel=verbose

命令行传递的参数优先级最高,然后是项目级别的配置,然后是用户级别的配置,最后是全局级别的配置。
编码务必使用 UTF-8 编码,否则可能不会读取配置。
# 或者 ; 表示注释。

如何修改配置呢?

bash 复制代码
npm config set [key] [value] [-g] # -g 全局配置
npm config set save-prefix ^
npm config set registry https://registry.npmmirror.com/

npm config get [key] # 查看配置
npm config get cache # 查看缓存目录
npm config list -l # 查看本地配置
npm config list -g # 全局配置
npm config list -u # 用户配置

日常开放常常需要置哪些信息呢?

registry 信息

npm 的源,可以是官方源,也可以是第三方源,比如淘宝源,或者公司的私有源。

bash 复制代码
# 官方源
registry=https://registry.npmjs.org/
# 淘宝源
# registry=https://registry.npmmirror.com/

配置限定包

bash 复制代码
@myscope:registry=https://mycustomregistry.example.org

认证信息

当使用私有的 npm 源时,可能需要认证信息。

注意认证信息的应用范围,源和认证信息不对应,可能导致404。

bash 复制代码
# bad config
@myorg:registry=https://somewhere-else.com/myorg
@another:registry=https://somewhere-else.com/another
# _authToken 将应用到 @myorg 和 @another 两个源上
//somewhere-else.com/:_authToken=MYTOKEN
# 只应用到 @myorg 上
//somewhere-else.com/myorg/:_authToken=MYTOKEN1
# 只应用到 @another 上
//somewhere-else.com/another/:_authToken=MYTOKEN2

# 从 gitlab 的私有仓库下载依赖
@jackzhoumine:registry=https://gitlab.com/api/v4/projects/54539895/packages/npm/
//gitlab.com/api/v4/projects/54539895/packages/npm/:_authToken=glpat-3759QXSo9Pz9FxGe12324

可通过这些信息认证:

bash 复制代码
_auth  # (base64 authentication string)
_authToken  #(authentication token)
username
_password
email
certfile # (path to certificate file)
keyfile # (path to key file)

通过 npm login 登录,会自动添加认证信息。
认证信息是敏感信息,不要提交到代码仓库。
不能配置多个源和对多个源的认证信息。

代理配置

bash 复制代码
proxy=http://username:password@proxy-server-address:port
https-proxy=https://username:password@proxy-server-address:port

缓存配置

配置 node 依赖的缓存。

bash 复制代码
cache=your/path/to/cache

安装行为

比如默认安装的时候,是否保存精确版本,依赖信息是否保存到 package.json 文件等。

bash 复制代码
# 相似版本
save-prefix=~

参考

相关推荐
NiceCloud喜云16 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
wordbaby16 小时前
React Native + RNOH:跨页面数据回传的最佳实践与避坑指南
前端·react native
GISer_Jing16 小时前
Three.js着色器编译机制深度解析
javascript·webgl·着色器
丷丩16 小时前
MapLibre GL JS第22课:查看本地GeoJSON
前端·javascript·map·mapbox·maplibre gl js
油炸自行车16 小时前
Claude Code 错误:API Error: 400 Failed to deserialize the JSON body into the
开发语言·javascript·json·trae·claude code·api error 400
Front思17 小时前
AI前端工程师需要具备能力+
前端·人工智能·ai
ZC跨境爬虫19 小时前
跟着 MDN 学CSS day_29:(掌握文本与字体样式的核心艺术)
前端·css·ui·html·tensorflow
李子琪。20 小时前
网络空间安全深度实战:CSRF 漏洞原理剖析与基于 Token 的纵深防御体系构建(全栈实验报告)
前端·安全·csrf
冰暮流星20 小时前
javascript之history对象介绍
前端·笔记
IT_陈寒20 小时前
Vite热更新失灵?你可能漏了这个配置
前端·人工智能·后端