全网详解 .npmrc 配置文件:比如.npmrc的优先级、命令行,如何配置.npmrc以及npm常用命令等
互联网全栈开发实战 2024-07-07 14:03:01 阅读 78
文章目录
1. 文章引言2. 简述.npmrc3. 配置.npmrc3.1 .npmrc配置文件的优先级3.2 .npmrc设置的命令行3.3 如何设置.npmrc
4. 配置发布组件5. npm常用命令6. 重要备注6.1 yarn6.2 scope命名空间6.3 镜像出错
1. 文章引言
今天在某低代码平台开发项目时,看到如下编译配置的弹出框:
注意红框中的<code>.npmrc这个词,它是什么意思呢,以及如何设置.npmrc
呢?
接下来,我便详细解说.npmrc
这个词,以及如何设置.npmrc
。
2. 简述.npmrc
.npmrc
可以理解成npm running cnfiguration
,即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
安装依赖包,如下所示:
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
文件删掉,重新开始下载。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。