私有NPM包

why

  • 前端目前很多项目都有一些公用的组件,基本上都是c/v 导致维护起来很麻烦,必须一些 tools utils request等等。每个项目可能都会有差异 导致一旦某些配置没及时更新 就导致项目出问题
  • 共用组件更新很麻烦,每个人都需要对自己的项目进行更新,如果需要对一个项目进行系统的优化,那么如果要所有项目都同步进行,工作量太大
  • typescript编写代码,保证代码的健壮性,用单元测试保证代码的稳定性,这样在使用组件的时候能够大大的提高使用效率
  • 利用leran对组件包进行编写,保证package的开发体验平顺,也可以保证发包的顺畅性,所有的包可以集成在一个大项目中。互相引用也可以,方便我们开发过程中进行调试相关的。

how

服务器

利用docker+verdaccio或者k8s+verdaccio进行部署,对我们的私有包服务器进行部署,提供域名

  • verdaccio是一个完整的,可以高度自定义的私有npm包方案,部署简单,功能足够我们去使用。但是要保证我们服务器的稳定性,避免build的时候出现问题
  • pm2 是一个node服务进程守护,对我们部署的服务器进行监听。

前端

使用就比较简单,需要明确的是我们npm源是可以进行切换的,需要全局安装nrm

npm i -g nrm
nrm ls
npm ---------- https://registry.npmjs.org/
  yarn --------- https://registry.yarnpkg.com/
  tencent ------ https://mirrors.cloud.tencent.com/npm/
  cnpm --------- https://r.cnpmjs.org/
  taobao ------- https://registry.npmmirror.com/
  npmMirror ---- https://skimdb.npmjs.com/registry/
* verdaccio ---- http://10.114.38.15:4873/

nrm add verdaccio http://服务器:port/ //增加npm源,指向我们服务器地址
nrm use verdaccio //当前npm install利用verdaccio 配置的服务器

verdaccio提供了账号注册以及权限的插件,如果后期有需要我们可以对发包权限进行收拢,账号注册进行限制。

//切换了npm源后
npm adduser //注册账号
npm login
npm who i am //查看当前登录账号

组件或者包开发利用leran,后期会专门对这一块进行讲解。发包没加权限系统下都可以发,但是后期肯定会对包管理,发包,组件进行审查。

项目

利用leran进行发包我们的包的形式大概是@package/fetch-reques 的结构,因为我们在本地有切换npm源的操作,但是在build 也就是服务器上进行build的时候是没有这个条件的 所以我们需要对我们项目中给的@package 包的来源进行指定

方法1:

// package.json
{
   "dependencies": {
     "@package/eslint-config-test": "私有包的完整路径"
  	}
}

方法2:

配置.npmrc文件,当我们使用@的形式,是scope的时候,我们可以在配置文件中制定该scope的包都从制定的地址下载安装

@package:registry= 私有包地址

配置完成后,在服务器上打包就不会因为源的问题出错。