在公司实际开发中,若多个项目存在逻辑相同、页面布局一样的页面,可考虑拆分出公共项目和子项目分别维护,将公共部分发成npm私包,在各个子项目中使用。
npm发包
使用 Nexus 搭建 npm 私服
Nexus仓库管理平台支持范围广泛,可用于maven、npm等仓库。目前Nexus Repository Manager更新到了3,查看官方文档
创建Local (私有的) proxy(代理) group(对外开放的)仓库
proxy 代理仓库,将资源代理缓存,减少重复下载,加快开发人员和CI服务器的下载速度。
group 仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。
local 是本地仓库,用于上传自己的npm包 以及第三方npm包。
npm发包流程
1. 新建package.json
在要发包的文件夹下新建package.json
name: 是你包的名字
version:这个是你包版本,建议每次更新包就给版本加一
description:这个是你对包的描述信息
main:这个是入口文件地址,我的入口是index.js
script:此处是配置脚本信息的,包打包可以在这里配置,然后重复此文的步骤。
keywords:包的关键字
author:作者
license:许可证
2. 新建index.js
新建入口文件,后面安装包后导入
3. 在项目根目录添加文件 .npmrc
local为发布包的地址
group为安装使用包的地址
4. 进入basic-platform文件夹发布
npm publish --registry=http://您的nexus服务地址/nexus/repository/npm-local/
如图表示发布成功
npm使用包
- 安装私有包命令
yarn add basic-platform@0.0.13 - 导入使用
踩坑记录
情况1
运行npm任何命令都是报错 401 unauthorized,无论用管理员还是超级用户
解决:将包发布到nexus npm仓库需要设置一下 Nexus Repository Manager 的权限。否则无法登陆到我们的私服。在Security->Realms栏目里,将npm Bearer Token Realm 选入Active。
情况2
npm publish 报错put 400 bad request
报错原因: npm的镜像源管理工具nrm 使用的是npm-group 的仓库地址
解决方案: package.json 里面加上 publishConfig: {registry: 发布地址}
情况3
报错:之前遇到一个问题 npm install可以成功,但是yarn add一直失败
解决:.npmrc头部加上always-auth=true
可以参考yarn的这个issurs github.com/yarnpkg/yar…