使用cnpmjs.org搭建私有npm库完整教程

这是一篇完整的使用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进行安装使用!

大功告成!!不当之处欢迎指正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270