布署
基于 docker 布署 nexus3。
docker pull sonatype/nexus3
docker volume create --name nexus-data
docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3
将IP和端口发布到外网,或直接使用内网IP和端口,以下用 192.168.1.11:8081
为例。
权限
Roles
创建新组 publish
,Privlleges 选择 nx-repository-view-*-*-*
。
Users
创建新用户 npm
,Roles 选择 publish
。
Realms
Active 添加 npm Bearer Token Realm
。
仓库
Blob Stores (可选)
新增存储,Type 为 File
,Name 为 npm
。
Repositories
- proxy 仓库
- 新增仓库,Recipe 为
npm(proxy)
- Name 为
npm-proxy
,Remote storage 为https://registry.npm.taobao.org
,Blob store 为npm
,其他默认
- 新增仓库,Recipe 为
- hosted 仓库
- 新增仓库,Recipe 为
npm(hosted)
- Name 为
npm-private
,Blob store 为npm
,其他默认 - 保存后生成的 URL 为
http://192.168.1.11:8081/repository/npm-private/
- 新增仓库,Recipe 为
- group 仓库
- 新增仓库,Recipe 为
npm(group)
- Name 为
npm
,Blob store 为npm
,Member repositories 中 Members 选npm-proxy
和npm-private
,其他默认 - 保存后生成的 URL 为
http://192.168.1.11:8081/repository/npm/
- 新增仓库,Recipe 为
本地拉取
npm i -g nrm
nrm add local http://192.168.1.11:8081/repository/npm
# 设置sass-binary-site
npm config set sass-binary-site https://registry.npmmirror.com/node-sass
# 安装包
npm i -S private/package
开发
在本地开发目录下执行 npm init
,生成配置,可以都使用默认值。生成 package.json
,示例如下:
{
"name": "private.package",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
}
}
在 package.json
添加以下配置:
"publishConfig": {
"registry": "http://192.168.1.11:8081/repository/npm-private"
},
编写包代码,可以在需要安装的项目中直接引入本地包:
npm i -S /path/to/npm/package
当修改包代码时,安装包的项目会自动更新。
发布
版本控制
npm有一套自己的版本控制标准——Semantic versioning(语义化版本)。package.json里面有一个version字段,具体体现为:
对于 "version":"x.y.z"
- 修复bug,小改动,增加z
- 增加了新特性,但仍能向后兼容,增加y
- 有很大的改动,无法向后兼容,增加x
通过 npm version <update_type>
自动改变版本,update_type
为 patch
, minor
,或 major
,分别表示补丁,小改,大改。
身份认证
运行 echo -n 'npm:password' | openssl base64
(password
替换为 npm
账号的密码) ,生成编码(例如 xxx
)。编辑 ~/.npmrc
,追加以下配置:_auth=xxx
。
发布
npm publish [--tag=beta]