执行npm install 时,是如何将依赖包下载下来的。

今天,在使用node 执行install 时,突然就想到,这些依赖包是从哪下载的呢?配置的下载路径是在哪呢。突然想到后面可能将项目包放到node私有服务器上,到时候也通过npm 来进行依赖下载。后来查了下相关资料,发现npm 安装时会有个配置文件,这个配置文件中配置了下载地址,也可以通过命令动态配置。这个配置文件就是.npmrc。如果你要在项目中使用私有服务器地址,也可在项目跟路径下弄个配置文件,这样就会出现多个。下面来介绍一下 配置文件的作用。

.npmrc的作用

.npmrc,可以理解成npm running cnfiguration, 即npm运行时配置文件。我们知道,npm最大的作用就是帮助开发者安装需要的依赖包,但是要从哪里下载?下载哪一个版本的包,把包下载到电脑的哪个路径下?

这些都可以在.npmrc中进行配置。

在设置.npmrc之前,我们需要知道:在你的电脑上,不止存在一个.npmrc文件,而是有多个。在我们安装包的时候,npm按照如下顺序读取这些配置文件:

项目配置文件 :你可以在项目的根目录下创建一个.npmrc文件,只用于管理这个项目的npm安装。
用户配置文件 :在你使用一个账号登陆的电脑的时候,可以为当前用户创建一个.npmrc文件,之后用该用户登录电脑,就可以使用该配置文件。可以通过 npm config get userconfig 来获取该文件的位置。
全局配置文件 : 一台电脑可能有多个用户,在这些用户之上,你可以设置一个公共的.npmrc文件,供所有用户使用。该文件的路径为:P R E F I X / e t c / n p m r c ,使用 n p m c o n f i g g e t p r e f i x 获取 PREFIX/etc/npmrc,使用 npm config get prefix 获取PREFIX/etc/npmrc,使用npmconfiggetprefix获取PREFIX。如果你不曾配置过全局文件,该文件不存在。
npm内嵌配置文件:最后还有npm内置配置文件,基本上用不到,不用过度关注。

如何设置.npmrc

1. 设置项目配置文件

在项目的根目录下新建 .npmrc 文件,在里面以 key=value 的格式进行配置。比如要把npm的源配置为淘宝源,可以参考一下代码:

bash复制代码registry=https://registry.npm.taobao.org

如果你想删除一些配置,可以直接把对应的代码行给删除。

2. 设置用户配置文件

你可以直接通过 npm config get userconfig 命令找到该文件的路径,然后直接仿照上述方法该文件,也可以通过 npm config set 命令继续设置,命令如下:

bash复制代码config set registry https://registry.npm.taobao.org

最终,命令行会帮助我们修改对应的配置文件。只不过使用命令行更加快捷。

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

bash复制代码npm config delete registry

3. 设置全局配置文件

方法和设置用户配置文件如出一辙,只不过在使用命令行时需要加上 -g 参数。

bash复制代码npm config set registry https://registry.npm.taobao.org -g

除此之外,这里列出一些常用的npm设置命令,有兴趣的话,可以了解一下,挺好玩的:

bash复制代码npm config set [-g|--global] //给配置参数key设置值为value;

npm config get //获取配置参数key的值;

npm config delete //删除置参数key及其值;

npm config list [-l] //显示npm的所有配置参数的信息;

npm config edit //编辑配置文件

npm get //获取配置参数key的值;

npm set [-g|--global] //给配置参数key设置值为value;

相关推荐
前端老石人2 分钟前
前端开发中的 URL 完全指南
开发语言·前端·javascript·css·html
CAE虚拟与现实3 分钟前
五一假期闲来无事,来个前段、后端的说明吧
前端·后端·vtk·three.js·前后端
Sarvartha14 分钟前
三目运算符
linux·服务器·前端
晓晨的博客21 分钟前
ROS1录制的bag包转换为ROS2格式
前端·chrome
Wect28 分钟前
LeetCode 72. 编辑距离:动态规划经典题解
前端·算法·typescript
donecoding42 分钟前
别再让 pnpm 跟着 nvm 跑了!独立安装终极指南
前端·node.js·前端工程化
GISer_Jing43 分钟前
AI全栈转型_TS后端学习路线
前端·人工智能·后端·学习
竹林81844 分钟前
被The Graph的GraphQL查询坑了三天,我用一个真实DeFi项目把链上数据索引彻底搞懂了
前端·graphql
漫游的渔夫44 分钟前
前端开发者做 Agent:别只会执行,用 4 类失败策略让 AI 知道怎么停
前端·人工智能·typescript
用户059540174461 小时前
把多级缓存一致性验证从手工测试换成 Pytest 参数化,Bug 排查时间缩短 90%
前端·css