全网详解 .npmrc 配置文件:比如.npmrc的优先级、命令行,如何配置.npmrc以及npm常用命令等

news2025/7/19 6:02:50

文章目录

  • 1. 文章引言
  • 2. 简述.npmrc
  • 3. 配置.npmrc
    • 3.1 .npmrc配置文件的优先级
    • 3.2 .npmrc设置的命令行
    • 3.3 如何设置.npmrc
  • 4. 配置发布组件
  • 5. npm常用命令
  • 6. 重要备注
    • 6.1 yarn
    • 6.2 scope命名空间
    • 6.3 镜像出错

1. 文章引言

今天在某低代码平台开发项目时,看到如下编译配置的弹出框:

在这里插入图片描述

注意红框中的.npmrc这个词,它是什么意思呢,以及如何设置.npmrc呢?

接下来,我便详细解说.npmrc这个词,以及如何设置.npmrc

2. 简述.npmrc

.npmrc可以理解成npm running cnfiguration,即npm运行时配置文件。

简单点说,.npmrc可以设置package.json中依赖包的安装来源,即从哪里下载依赖包。

3. 配置.npmrc

3.1 .npmrc配置文件的优先级

一般情况下,我们的电脑中有多个.npmrc文件,我们在安装包时,npm按照如下顺序读取这些配置文件:

  1. 项目配置文件: /project/.npmrc

  2. 用户配置文件:~/.npmrc

我们可以通过如下命令,来获取.npmrc用户配置文件路径:

npm config get userconfig

如果想恢复默认配置,只需要将用户配置文件~/.npmrc删除即可。

  1. 全局配置文件:$PREFIX/etc/npmrc

我们可以通过如下命令,来获取.npmrc 全局配置文件路径$PREFIX

npm config get prefix

【注意】如果你不曾配置过全局文件,该文件不存在。

  1. npm内置配置文件/path/to/npm/npmrc

我们可以通过如下命令,获取npmrcnpm的路径:

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

  1. 设置项目配置文件

项目下.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
  1. 设置用户配置文件

可以直接通过如下命令:

npm config get userconfig

找到用户配置文件的路径,直接仿照上述方法修改该文件。

当然,也可以通过npm config set命令继续设置,如下所示:

npm config set registry https://registry.npm.taobao.org

如果想要删除一些配置,可以直接编辑.npmrc文件,也可以使用命令进行删除,例如:

npm config delete registry
  1. 设置全局配置文件

方法同设置用户配置文件一样,只不过在使用命令行时需要加上-g参数,如下所示:

npm config set registry https://registry.npm.taobao.org -g
  1. npm命令添加注册源选项

比如,临时使用淘宝镜像,如下所示:

npm --registry=https://registry.npm.taobao.org [npm命令]

又比如,使用npm安装依赖包,如下所示:

npm install  --registry https://registry.npmjs.org

但不推荐用这种做法,更推荐设置项目配置文件.npmrc

4. 配置发布组件

npm配置组件发布的方式有如下两种:

  • 通过配置packege.json实现

  • 通过配置文件.npmrc实现

  1. package.json配置方式
# @aa是组件的scope。
# scope在模块名name中使用时,以@开头,后边跟一个/
{
   "name": "@aa/xxx", // 发布npm包的名字
   "version": "1.0.0", // 你的npm包版本
   "description": "xxxx", // 包的描述
   "main": "dist/btn.js", // 指定组件的主入口文件
   "publishConfig": {
       "registry": "要发布的私有仓库地址,然后在.npmrc配置用户名密码"
   }
   ......
}
  1. .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是组件的scopescope在模块名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文件删掉,重新开始下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/347555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java实现调用ChatGPT的相关接口(附详细思路)

目录1.0.简单版2.0.升级版2-1.call.timeout()怎么传入新的超时值2-2.timeout(10, TimeUnit.SECONDS)两个参数的意思&#xff0c;具体含义3.0.进阶版3-1.java.net.SocketTimeoutException: 超时如何解决4.0.终极版1.0.简单版 以下是一个使用 Java 实际请求 ChatGPT 的简单示例代…

EasyExcel详解-写Excel

一、注解使用注解很简单&#xff0c;只要在对应的实体类上面加上注解即可。ExcelProperty用于匹配excel和实体类的匹配,参数如下&#xff1a;名称默认值描述value空用于匹配excel中的头&#xff0c;必须全匹配,如果有多行头&#xff0c;会匹配最后一行头orderInteger.MAX_VALUE…

硬件系统工程师宝典(6)-----如何减小信号串扰?

各位同学大家好&#xff0c;欢迎继续做客电子工程学习圈&#xff0c;今天我们继续来讲这本书&#xff0c;硬件系统工程师宝典。 上篇我们说到描述信号传输的过程的需要做好阻抗匹配&#xff0c;以减小信号的反射。今天我们来看看传输线之间的噪声干扰&#xff0c;那就是信号的…

rdma rocev2报文格式总结

格式如下&#xff1a; wireshark抓包&#xff0c;soft-roce(基于rocev2实现的)格式如下&#xff1a; 其实这里看着有点奇怪&#xff0c;ICRC是跟在Payload头后面的&#xff0c;不知道为什么抓包看到的却是在BTH头后面的&#xff0c;还有就是看不到FCS?? 其中BTH头的格式有…

极兔一面:Dockerfile如何优化?注意:千万不要只说减少层数

说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;面试题是一个非常、非常高频的交流话题。 最近&#xff0c;有小伙伴面试极兔时&#xff0c;遇到一个面试题&#xff1a; 如果优化 Dockerfile&#xff1f; 小伙伴没有回答好&#xff0c;只是提到了减少镜像层数。…

01背包问题 AcWing(JAVA)

有 N件物品和一个容量是 V的背包。每件物品只能使用一次。 第 i件物品的体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整数&#xff0c;N&#xff…

数据结构与算法(一):概述

数据结构学了有一年左右的时间了&#xff0c;但是一直没有详细地总结一下&#xff0c;现在回想起来&#xff0c;感觉有些内容忘记了。所以接下来一段时间我将重新归纳总结一下&#xff0c;算是温故而知新了。 一、数据结构 1、定义 数据结构是计算机存储、组织数据的方式。在…

excel学习笔记-导入外部文件,报错,数值格式变换,日期格式的转化,求和快捷键,冻结窗格

这里写目录标题一、导入外部文件1.导入csv文件2.导入txt文件3.修改txt内容&#xff0c;需要刷新才能看见更改二、报错三、数值格式变换四、日期格式的转化五、ALT &#xff0c;求和快捷键六、冻结窗格一、导入外部文件 1.导入csv文件 2.导入txt文件 3.修改txt内容&#xff0c;…

内网渗透(三十)之横向移动篇-利用远控工具向日葵横向移动

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

力扣sql简单篇练习(十六)

力扣sql简单篇练习(十六) 1 产品销售分析|| 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT p.product_id,sum(s.quantity) total_quantity FROM Product p INNER JOIN Sales s ON p.product_ids.product_id GROUP BY p.product_id1.3 运行截…

explain 每个列的含义

官网传送门&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/explain-output.html 实例表 DROP TABLE IF EXISTS actor;CREATE TABLE actor (id int(11) NOT NULL,name varchar(45) DEFAULT NULL,update_time datetime DEFAULT NULL,PRIMARY KEY (id)) ENGINEInnoDB DEFA…

【Java项目】基于Java+MySQL+Tomcat+maven+Servlet的个人博客系统的完整分析

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【Java项目】 ✈️✈️本篇内容:个人博客系统前后端分离实现&#xff01; &#x1f680;&#x1f680;个人代码托管github&#xff1a;博客系统源码地址&#xff…

maven解决包冲突简单方式(插件maven helper | maven指令)

文章目录使用idea插件maven helper使用maven指令在Java开发中&#xff0c;常常会遇到不同jar包之间存在冲突的情况&#xff0c;这可能会导致编译错误、运行时异常等问题。 使用idea插件maven helper 在idea安装插件maven helper 安装重启完之后点击pom文件&#xff0c;有一个De…

元宇宙基础设施:WEB 3.0 chain33 优势分析

WEB 3.0 chain33 优势分析 一、与以太坊兼容&#xff08;优势&#xff1a;兼容及开发成本低百倍&#xff09; 使用 Solidity 开发智能合约并部署在 EVM 虚拟机上是目前以太坊生态主流的开发 模式&#xff0c;目前看来不兼容以太坊或不能与以太坊跨链都可能是不归路&#xff0c;…

AcWing语法基础课笔记 第一章 C++入门及简单的顺序结构

第一章 C入门及简单的顺序结构 编程是一种控制计算机的方式&#xff0c;和我们平时双击打开文件、关机、重启没有任何区别。 ———闫学灿 C中常用的变量类型 和所占字节大小 输出变量地址符&#xff1a; 软件环境 作业的评测与提交 在线练习地址&#xff1a;www.acwing.com …

数据库设计的基本步骤

分步设计法遵循自顶向下、逐步求精的原则&#xff0c;将数据库设计过程分解为若干相互独立又相互依存的阶段&#xff0c;每一阶段采用不同的技术与工具&#xff0c;解决不同的问题&#xff0c;从而将问题局部化&#xff0c;减少了局部问题对整体设计的影响。目前&#xff0c;此…

aws Distro for OpenTelemetry 可观测性workshop记录

参考资料 https://aws-otel.github.io/docs/introductionhttps://aws-otel.github.io/docs/introduction aws distro for opentelemetry 官方提供了不同语言不同使用场景下完善的使用实例和相关配置。 AWS Distro for OpenTelemetrics 由以下部分组成&#xff0c;用于向后端…

用户认证概述

文章目录一、用户身份认证1.1 单一服务器模式1.2 SSO&#xff08;Single Sign On&#xff09;模式1.3 Token模式二、JWT令牌2.1 JWT 令牌说明2.2 JWT令牌的组成2.3 JWT 问题和趋势2.4 JWT 测试一、用户身份认证 1.1 单一服务器模式 一般过程如下&#xff1a; 用户向服务器发送…

【编程基础之Python】5、安装Python第三方模块

【编程基础之Python】5、安装Python第三方模块安装Python第三方模块为什么需要安装第三方模块Python包管理器介绍pippip installpython -m pip installcondaconda install在Windows环境中安装Python模块安装numpy安装pandas安装matplotlib在Linux环境中安装Python模块在PyCharm…

线程的创建

1. 多线程常用函数 1.1 创建一条新线程pthread_create 对此函数使用注意以下几点&#xff1a; 线程例程指的是&#xff1a;如果线程创建成功&#xff0c;则该线程会立即执行的函数。POSIX线程库的所有API对返回值的处理原则一致&#xff1a;成功返回0&#xff0c;失败返回错误…