这是一篇完整的使用cnpmjs.org搭建企业私有仓库文章。其中有些章节的内容你已操作过了,请忽略!
有关cnpmjs.org的信息看 官方Github 。
本文是基于Linux服务器进行部署的。
nodejs版本为:v8.9.0
cnpmjs.org版本为:2.19.4
MariaDB数据库版本为:5.5.60
安装nodejs
Linux安装服务的方式很多,这里使用wget方式安装nodejs服务,若wget命令不存在,可以先安装wget:
yum -y install wget
// 切换到根目录
cd /
// 下载
wget https://nodejs.org/dist/v8.9.0/node-v8.9.0-linux-x64.tar.xz
// 解压
tar xvf node-v8.9.0-linux-x64.tar.xz
// 修改为简洁的文件夹名称
mv node-v8.9.0-linux-x64 node-v8.9.0
// 设置node&npm为全局可用
ln -s /node-v8.9.0/bin/node /usr/bin/node
ln -s /node-v8.9.0/bin/npm /usr/bin/npm
// 验证nodejs服务是否安装成功
node -v
npm -v
安装mysql mariadb
私有库依赖数据库,这里使用的是mariadb
yum -y install mariadb mariadb-server
// 启动服务
systemctl start mariadb.service
// 设置开机启动
systemctl enable mariadb.service
// 配置,首次运行会提示输入密码,直接回车即可
// 其他按提示进行设置
mysql_secure_installation
安装cnpmjs.org
cnpmjs.org选用目前稳定2.19.4版本
npm i -g cnpmjs.org@2.19.4
安装成功后,安装目录应该是在/node-v8.9.0/libs/node_modules/cnpmjs.org
下(如果不是请自行找到安装目录),进去该目录对其进行一些配置修改(配置文件为config/index.js
)
var config = {
registryPort: 7001, // 仓库端口
webPort: 7002, // web站点端口
bindingHost: '0.0.0.0', // 设置为0.0.0.0对外可访问
// 设置管理员
admins: {
// name: email
xxx: 'xxx@xxx.com'
},
// 配置数据库信息
database: {
db: 'cnpmjs',
username: 'root',
password: '123456',
dialect: 'mysql',
host: '127.0.0.1',
port: 3306,
},
// 设置私库命名空间
scopes: [ '@xxx' ],
}
建数据库并导入sql数据表
在/cnpmjs.org
目录下登录数据库
mysql -uroot -pxxx // xxx为你设置的密码
创建数据库并导入sql,注意:名称应与你配置的相同;执行数据库命令别忘记;
了
create database cnpmjs;
use cnpmjs;
// 导入sql
source docs/db.sql;
运行服务
npm run start
仓库访问地址127.0.0.1:7001
;web访问地址127.0.0.1:7002
定制自己的cli客户端
假如定xnpm
为cli名称,新建项目发布于npmjs.com上,相关账号自行注册。
新建Github
项目,package.json关键配置如下:
{
"name": "xnpm-cli",
"version": "1.1.0",
"description": "xnpm client",
"main": "bin/xnpm",
"preferGlobal": true,
"bin": {
"vnpm": "./bin/xnpm"
},
"keywords": [
"vnpm"
]
}
./bin/xnpm
详细脚本(PS:Mac可以直接使用bash配置更简单,该脚本是为了兼容windows)
#!/usr/bin/env node
const os = require("os");
const colors = require('colors');
const child_process = require('child_process')
const params = process.argv.slice(2).join(' ');
const NPM_REGISTRY = "你的仓库地址";
const NODE_DIST = "https://npm.taobao.org/dist";
const HOME = os.homedir();
try {
child_process.execSync(`npm --registry=${NPM_REGISTRY} --disturl=${NODE_DIST} \
--userconfig=${HOME}/.xnpmrc --cache=${HOME}/.cache/xnpm ${params}`, {
stdio: 'inherit'
});
} catch (e) {
console.log('child_process.execSync'.red, e)
}
npm login
npm publish
后,即可安装我们的客户端了
npm install -g xnpm-cli
// 查看信息
xnpm config ls
至此,xnpm
已经完全替代npm
了!
发布私有包时记得package.json
文件name
的设置
{
name: '@命名空间/test'
}
一样使用xnpm login
xnpm publish
进行登录发布操作,xnpm install @命名空间/test
进行安装使用!
大功告成!!不当之处欢迎指正。