.npmrc 配置文件
原文地址:https://blog.csdn.net/lvoelife/article/details/129044749
.npmrc 是 npm 运行时配置文件,用于设置依赖包的安装来源。配置文件有项目、用户和全局三个级别,可以通过 npm config set 命令设置 key = value 对。文章介绍了如何设置不同级别的 .npmrc,包括配置发布组件到私有仓库的方法,并提到了 yarn、scope 命名空间和处理镜像出错的问题
1. 文章引言
今天在某低代码平台开发项目时,看到如下编译配置的弹出框
image.png
注意红框中的 .npmrc
这个词,它是什么意思呢,以及如何设置 .npmrc
呢?
接下来,我便详细解说 .npmrc
这个词,以及如何设置 .npmrc
2. 简述 .npmrc
.npmrc
可以理解成 npm running configuration
,即 npm
运行时配置文件。
简单点说,.npmrc
可以设置 package.json
中依赖包的安装来源,即从哪里下载依赖包。
3. 配置 .npmrc
3.1 .npmrc 配置文件的优先级
一般情况下,我们的电脑中有多个 .npmrc
文件,我们在安装包时,npm
按照如下顺序读取这些配置文件:
项目配置文件:
/project/.npmrc
用户配置文件:~/.npmrc
我们可以通过如下命令,来获取 .npmrc
用户配置文件路径:
npm config get userconfig
如果想恢复默认配置,只需要将用户配置文件 ~/.npmrc
删除即可。
全局配置文件:$PREFIX/etc/npmrc
我们可以通过如下命令,来获取 .npmrc
全局配置文件路径 $PREFIX
:
npm config get prefix
【注意】如果你不曾配置过全局文件,该文件不存在。
npm
内置配置文件 /path/to/npm/npmrc
我们可以通过如下命令,获取 npmrc
在 npm
的路径:
which npm
与 npm
同级别, 使用 which npm
获取 npm
的路径。
3.2 .npmrc 设置的命令行
在讲解如何设置 .npmrc
之前,我们需要了解设置文件的命令行。
我们一般使用 key-value
的方式来设置文件,如下所示:
npm config set key value
例如,设置仓库信息,可以使用下述命令行:
npm config set registry https://repo.huaweicloud.com/repository/npm/
3.3 如何设置 .npmrc
设置项目配置文件
项目下 .npmrc
文件的优先级最高,可以给每个项目配置不同的镜像,项目之间的配置互不影响。
在项目的根目录下新建 .npmrc
文件,在里面以 key=value
的格式进行配置。
registry=https://registry.npm.taobao.org
也可以指定特殊的命名空间(scope)的来源。
比如,以 @testNpmRc
开头的包从 registry=https://npm.xx.com
这里下载,其余全去淘宝镜像下载。
registry=https://registry.npm.taobao.org/
@testNpmRc:registry = https://npm.xx.com
设置用户配置文件
可以直接通过如下命令:
npm config get userconfig
找到用户配置文件的路径,直接仿照上述方法修改该文件。
当然,也可以通过 npm config set
命令继续设置,如下所示:
npm config set registry https://registry.npm.taobao.org
如果想要删除一些配置,可以直接编辑 .npmrc
文件,也可以使用命令进行删除,例如:
npm config delete registry
设置全局配置文件
方法同设置用户配置文件一样,只不过在使用命令行时需要加上 -g
参数,如下所示:
npm config set registry https://registry.npm.taobao.org -g
给 npm
命令添加注册源选项
比如,临时使用淘宝镜像,如下所示:
npm --registry=https://registry.npm.taobao.org
又比如,使用 npm
安装依赖包,如下所示:
npm install --registry https://registry.npmjs.org
但不推荐用这种做法,更推荐设置项目配置文件 .npmrc
。
4. 配置发布组件
npm
配置组件发布的方式有如下两种:
通过配置 packege.json
实现
通过配置文件 .npmrc
实现
package.json 配置方式
# @aa 是组件的 scope。
# scope 在模块名 name 中使用时,以 @ 开头,后边跟一个/
{
"name": "@aa/xxx", // 发布 npm 包的名字
"version": "1.0.0", // 你的 npm 包版本
"description": "xxxx", // 包的描述
"main": "dist/btn.js", // 指定组件的主入口文件
"publishConfig": {
"registry": "要发布的私有仓库地址,然后在 .npmrc 配置用户名密码"
}
......
}
.npmrc配置方式
# package.json 不做任何仓库的配置:
{
"name": "@aa/xxx", // 发布 npm 包的名字
"version": "1.0.0", // 你的 npm 包版本
"description": "xxxx", // 包的描述
"main": "dist/btn.js", // 指定组件的主入口文件
......
}
# .npmrc 配置仓库地址和用户名密码:
@aa:registry=私仓地址
配置好仓库信息后,执行如下发布命令,即可将打包好的组件发布到仓库中:
npm publish
5. npm 常用命令
npm config set <key> <value> [-g|--global] //给配置参数key设置值为value;
npm config get <key> //获取配置参数key的值;
npm config delete <key> [-g|--global] //删除置参数key及其值;
npm config list [-l] //显示npm的所有配置参数的信息;
npm config edit //编辑用户配置文件
npm get <key> //获取配置参数 key 生效的值;
npm set <key> <value> [-g|--global] //给配置参数key设置值为value;
6. 重要备注
6.1 yarn
yarn
会读取 .npmrc
的配置文件,所以不必为 yarn
再设置一次。
6.2 scope 命名空间
上文提到的指定特殊的命名空间(scope)的来源,如下代码所示:
@aa:registry=https://repo.huaweicloud.com/repository/npm/
其中,@aa
是组件的 scope
,scope
在模块名 name
中使用时,以 @
开头,比如:
# 在 package.json 的 dependencies 标签中加上即可使用。
"dependencies": {
"@test/mypackage": "^1.3.0"
}
6.3 镜像出错
.npmrc
文件配置了私有包 registry
源,但是当前的下载源是淘宝镜像,可能会报如下错误:
error Command failed with exit code 1
可以将当前的下载源改成私有包 registry
源,如果改了之后还报错,可以尝试将 lock
文件,或者 node_modules
文件删掉,重新开始下载。