配置文件.npmrc优先级之在CI/CD工作流中私有NPM仓库使用

皇甫端
• 阅读 2139
.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会按照如下顺序读取配置文件,也就是优先级;

  1. 项目配置文件: /project/.npmrc
  2. 用户配置文件:~/.npmrc
  3. 全局配置文件:/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中的配置

配置文件.npmrc优先级之在CI/CD工作流中私有NPM仓库使用
划重点:个人基本上等于免费使用,还有服务器资源赠送,免费的羊毛撸起来!
网址: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,生成可以部署的镜像;

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
4年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
4年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
4年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
4年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Stella981 Stella981
4年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
2年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这