.npmrc 是 npm 运行时配置文件,简略点说.npmrc 能够设置 package.json 中依赖包的装置起源既从哪里下载依赖包,也能够配置 token 秘钥不便从公有的 NPM 仓库拉取安装包;
npm、cnpm、pnpm、yarn 都是在干一件事用起来没啥大区别,据说当初最好用的就是 pnpm,上面的操作中都能够用 pnpm 代替 npm,前提须要装置了 pnpm;
在上线部署的 CI/CD 中配置的话,没有必要用 pnpm,pnpm 实用于本地开发;
什么是 CI/CD 呢?其实就是流水线容器化部署,主动拉取代码主动打包主动部署这一套;
pnpm 装置
# 全局装置 pnpm,都说它好用就装上间接用呗
npm install -g pnpm
配置文件.npmrc 优先级
电脑系统中可能会存在多个.npmrc 文件,在咱们装置依赖包时,npm 会依照如下程序读取配置文件,也就是优先级;
- 我的项目配置文件: /project/.npmrc
- 用户配置文件:~/.npmrc
- 全局配置文件:/etc/npmrc
配置.npmrc
.npmrc 文件外面以 key=value 的格局进行配置;
1、国内镜像源,在国内用国内的源速度飞起;
中国镜像站
搜寻地址:https://npmmirror.com/
registry 地址:https://registry.npmmirror.com
2、应用公有仓库,阿里云效“制品仓库”收费提供公有 NPM 治理(如果应用其它公有操作根本一样);
应用公有仓库是起因大部分是有一些业务上的封装,从公司平安角度思考不能应用公共仓库托管,应用了公有仓库不会影响原来公共源的拉取应用,公有仓库提供方(阿里云效)都给解决好了,咱们也不必管;
如果应用了公有仓库,然而没有配置好凭证,npm install 就会报错;
# 拜访链接,能够依据操作步骤提醒操作
https://packages.aliyun.com/npm/npm-registry/guide
#设置镜像源,相当于在 `~/.npmrc` 文件中配置了镜像源,上面截图第一行
npm config set registry=https://packages.aliyun.com/*******/npm/npm-registry/
#登陆 npm 仓库并设置凭证
npm login
#输出阿里云效提供的用户名、明码和邮箱后,相当在 `~/.npmrc` 减少了公有拜访令牌,上面截图第二行 `_authToken` 前面的值就是令牌 token 请妥善保存
//??????/:_authToken=0000-0000000-0000-0000
在 CI/CD 工作流中应用公有包
公有仓库配置完后,零碎家目录下会创立好.npmrc 配置文件“~/.npmrc”,然而如果是在 CI/CD 中应用配置文件最好是放在我的项目录下,我的项目目录下的配置文件优先级也最高;
# ` 请留神:这波操作相当于把你的秘钥 token 裸露在了我的项目目录下,是存在安全隐患的 `
# 复制一下就好,就是把创立好的配置文件复制到本人的我的项目目录下
cp ~/.npmrc /project/
爱护您的令牌
你的令牌可能有权读取专用包、代表你公布新包或更改用户或包设置;不要将令牌增加到版本控制中或以不平安的形式存储令牌;将其存储在明码管理器、云提供商的平安存储或 CI/CD 提供商的平安存储中;
# 编辑 `.npmrc` 文件,将 `_authToken=` 前面 token 用环境变量代替
//???????/:_authToken=${NPM_TOKEN}
# 应用 `export` 能够申明环境变量
export NPM_TOKEN=0000-0000000-0000-0000
# 理论开发是,每次都 export 一下也不事实,所以须要一劳永逸,写在 `.zshrc`、`.bash_profile`
echo export NPM_TOKEN=0000-0000000-0000-0000 >> ~/.zshrc
CI/CD 中的配置
划重点:集体基本上等于收费应用,还有服务器资源赠送,收费的羊毛撸起来!
网址:https://code-galaxy.net
- 基于 Galaxy 的流水线配置如下,如果应用的是其它 CI/CD 工具,基本上相似;
- Galaxy 学习老本靠近于 0;
1、git-clone,克隆代码;
2、depend-install,依赖装置;
npm install -g pnpm --registry=https://registry.npmmirror.com \
&& node -v \
&& npm -v \
&& pnpm -v \
&& export NPM_TOKEN=0000-0000000-0000-0000 \
&& pnpm install \
&& pnpm run build:dev
3、dockerfile-generator,生成 Dockerfile;
4、build-push-image,生成能够部署的镜像;