你知道 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=~

参考

相关推荐
陈随易17 分钟前
bm2,Node.js 与 Bun 项目部署新选择
前端·后端·程序员
可乐鸡翅yeah_1 小时前
FFmpeg 生成 HLS 独立分片 independent‑segments 参数到底有什么用
javascript·ffmpeg·音视频·safari·m3u8
福兮说2 小时前
canvas 旋转图片的六个坑:四角被裁、Math.ceil 多出 1px 黑边、JPG 角发黑、翻转方向反了
前端·javascript·图像处理·canvas
Ai-_Man3 小时前
您您这可以把Grok的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
传人once3 小时前
多图片上传预览功能如何写
前端·css·html·jquery·html5
Eric.463 小时前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
liangshanbo12154 小时前
JavaScript 异步核心主线
javascript·事件循环·异步操作
传人once5 小时前
悬停旋转放大和位移效果如何写
javascript·css·动画
库拉镜像AI牛牛5 小时前
短剧内容自动化生产:知漫剧工作室落地教程
大数据·服务器·前端·人工智能·语音识别
律宏阔5 小时前
Flutter 列表图片内存优化:CachedNetworkImage 与 ClipRRect 的取舍
前端·flutter