前言

nvm可以在1台主机上管理多个Node.js版本;

Node.js的第3方依赖包管理方式比较多

  1. npm
  2. cnpm
  3. yarn
  4. pnpm

但它们都做了1件同样的事,从官方源或私有源下载下载Node.js第3方依赖包,自动保存到node_modules目录;

一、npm

NPM的全称是Node Package Manager,是1个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。

1.npmrc文件

.npmrc可以理解成npm running cnfiguration, 即npm客户运行时配置文件,该配置文件为ini格式

.npmrc文件用于配置npm行为,当你运行npm命令时,npm会按照特定的顺序加载和使用.npmrc文件。

以下是加载顺序:

  • 命令行参数:使用 npm install <package> --registry=<url>npm config set registry <url> 可以临时设置 registry,这种方式优先级最高,且只在该命令中生效。

  • 环境变量:通过 NPM_CONFIG_REGISTRY 环境变量指定 registry。这个设置会覆盖 .npmrc 中的配置,但优先级低于命令行参数。

  • 工作区(Workspace).npmrc 文件:如果你在一个 npm 工作区中,那么在工作区根目录的 .npmrc 文件会被加载。
  • 项目(Project).npmrc 文件:在项目根目录的 .npmrc 文件会被加载。
  • 用户(User).npmrc 文件:在用户的主目录中的 .npmrc 文件会被加载。
  • 全局.npmrc 文件:如果 --global 标志被设置,那么npm全局安装目录中的 .npmrc文件会被加载。
  • npm 默认配置:如果以上都没有找到配置,npm 会使用默认配置。

注意:如果存在多个.npmrc文件,它们的设置可能会被合并和覆盖。

 可以通过npm config list命令查看当前npm加载到的配置信息;

npm config list -l

1.1.配置登录resgistry信息

配置登录私有registry的用户、密码、邮箱

registry=https://xxx.com/
//xxx.com:_password=xx
//xxx.com/:username=xxx
/xxx.com:email=xxx
//xxx.com:always-auth=true

可以通过在.npmrc中配置账号信息的方式登录私有registry,但不太安全;

可以使用authToken的方式登录,也可使用token-helper通过程序动态获取authToken;

1.2.登录resgistry

通过npm adduser / npm login命令登录到私有registry仓库

使用默认的用户名、密码、邮箱回车

npm adduser / npm login
npm whoami npm http fetch GET 200 https://xxx.com/my-registry/-/whoami 228ms zhanggen

1.3.自动生成:_authToken配置

登录私有registry成功后,npm客户端自动修改~/.npmrc,生成:_authToken配置项,并删除用户名和密码配置项;

registry=https://xxx.com/my-registry
//registry=https://xxx.com/my-registry:_authToken=mytoken

二、pnpm

pnpm是对npm的加强,相较于npm拥有如下特性;

安装速度更快:pnpm比npm快了近2倍

磁盘利用率更高效:node_modules中的所有文件均克隆或硬链接自单一存储位置
支持单体仓库:pnpm 内置了对单个源码仓库中包含多个软件包的支持
权限严格:pnpm创建的node_modules默认并非扁平结构,因此代码无法对任意软件包进行访问

三、yarn

Node.js中另1种依赖包资源管理器(Yet Another Resource Negotiator)拥有如下特性;

速度超快:

Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。

超级安全:

在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。

超级可靠:

使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。

四、Node.js依赖包安装常见报错

DevOps平台的Node.js构建基础镜像中预装了nvm、pnm、pnpm、yarn支持用户选择不同Node版本和依赖包管理器;

前端UI支持用户输入自定义的build-script控制npm install和build过程;

所以在CI构建环节遇到的各种Node.js版本+npm/pnpm/yarn包管理器下载依赖失败案例;

1.pnpm install报错401

当前环境

pnpm -v
7.32.4
pm -v
6.14.16
node -v
v14.19.0

Google发现这是pnpm项目的1个issue;

pnpm报错如下更新nvm use v20.12.0切换到node v20.12.0版本解决

No authorization header was set for the request.
These authorization settings were found:

除了切换pnpm版本外可以在~/.npmrc做如下配置

registry = https://company-artifactory-url.com/artifactory/api/npm/npm/
//company-artifactory-url.com/artifactory/api/npm/npm/:_authToken = ${ARTIFACTORY_TOKEN}
//company-artifactory-url.com:443/artifactory/api/npm/npm/:_authToken = ${ARTIFACTORY_TOKEN}

 

参考

posted on 2024-10-18 06:52  Martin8866  阅读(14)  评论(0编辑  收藏  举报