如何搭建NPM私有服务器?

一、基于NodeJS和sinopia搭建

  1. 安装依赖sinopia
    项目地址: https://github.com/rlidwka/sinopia
   npm install -g sinopia
  1. 启动sinopia
    默认启动方式 sinopia 本地默认服务器地址是http://localhost:4873/;
    但这样只能通过本机进行访问,如果想要通过远程访问你的npm服务器;需要指定端口启动方式,建议使用本机的ip地址 sinopia -l 172.0.0.1:8081
  2. 创建用户
    npm adduser --registry http://172.0.0.1:8080;
    npm adduser --registry http://localhost:4873;
  3. 创建npm包
    a.初始化npm包npm init
    初始化package为:
    {
          "name": "test",
          "version": "1.0.0",
          "description": "test",
          "main": "index.js",
          "scripts": {
            "test": "echo \"Error: no test specified\" && exit 1"
          },
          "keywords": [
            "test"
          ],
          "author": "5******@qq.com",
          "license": "ISC"
}

b.发布npm包

    npm publish --registry http://172.0.0.1:8080
    npm publish --registry http://localhost:4873

c.安装npm包

    npm login --registry http://172.0.0.1:8080
    npm install --registry http://172.0.0.1:8080 test  --save

二、使用cnpm搭建私有NPM仓库

依赖 Node MySQL Redis qiniu CND (或其他CDN)

获取代码
git clone git://github.com/fengmk2/cnpmjs.org.git $HOME/cnpmjs.org && cd $HOME/cnpmjs.org

创建MySQL表:mac安装mysql的两种方法(含配置)

    mysql -u root -p
    mysql> use cnpmjs
    mysql> source docs/db.sql

然后编写配置文件config/config.js

    module.exports = {
        debug: false,
        enableCluster: true, // enable cluster mode
        mysqlServers: [{
            host: 'localhost',
            port: 3306,
            user: 'cnpmjs',
            password: 'cnpmjs123',
        }],
        mysqlDatabase: 'cnpmjstest',
        redis: {
          host: 'localhost',
          port: 6379,
        },
        nfs: null, //use your own CND here
        enablePrivate: true, // enable private mode, only admin can publish, other use just can sync package from source npm
        admins: {
          admin: 'admin@cnpmjs.org',
        },
        syncModel: 'exist'
      };

安装依赖 npm install
启动 npm run start
Starting cnpmjs.org ...
Start nodejs success. PID=27175
好了,部署完成!

客户端设置
服务跑起来之后,需要在自己的电脑上配置下客户端。
首先安装cnpm客户端:npm install -g cnpm
在自己的脚本的启动文件(例如.zshrc或.bashrc)中添加别名:

echo "#lnpm alias\nalias lnpm='cnpm --registry=http://localhost:7001\
 --registryweb=http://localhost:7002\
 --cache=$HOME/.npm/.cache/lnpm\
 --userconfig=$HOME/.lnpmrc'" >> $HOME/.zshrc && source $HOME/.zshrc

注意用自己的仓库信息替换上面命令的相关部分。
参考链接:使用CNPM搭建企业内部私有的NPM库