搭建 Private NPM

时间:2021-1-8 作者:admin

在Mac上完成了搭建流程,Windows可能稍有不同。

目前来说NPM生态事实上完成了前端模块化系统的必要准备,因此如果你厂的业务会有Private的需求,这个Point会有两个方案给你选择:

  • 基于cnpmjs.org搭建
  • 直接购买npm company服务,一个人/一个月/7美金

其实在Github上还有另外一个方案:【sinopia】,只是这个库已经不在维护,也就放弃了选择这个方案。

吐槽一下cnpmjs.org的Getting Start,《Deploy a private npm registry in 5 minutes》使用的是sqlite3,而exampless使用的是mysql,印证一些思考时,走了些弯路。(建议:统一起来会比较好)

创建一个项目:

|

1
2
3

|

$ mkdir web-private-npm && cd web-private-npm
$ npm init -y
$ npm i cnpmjs.org --save

|

安装mysql:

|

1
2
3
4

|

$ brew install mysql
$ mysql.server start
$ mysql -uroot
$ mysql > show databases;

|

本地mysql可以不设置root密码,免得忘记。

创建config.js和index.js:

|

1
2

|

$ touch config.js
$ touch index.js

|

docs 目录中有db.sql文件,用于创建表字段,最好copy到你的项目中,因为cnpmjs.org包中的db.sql是个空文件。

创建数据库和表字段:

|

1
2
3

|

$ mysql -uroot -e 'CREATE DATABASE private_npm'
$ mysql -uroot 'private_npm' < ./db.sql
$ mysql -uroot -e 'shhow tables;'

|

通过cnpmjs.org的源码找到了两个start类的函数:

以及cnpmjs.org自己的配置文件。

大部分的时候我们基本就是在学习怎么配置它:

|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

|

module.exports = {
admin: {
'icepy': 'xiangwenwe@gmail.com''xiangwenwe@gmail.com''xiangwenwe@gmail.com'
},
database:{
db: 'private_npm',
username: 'root',
password: '',
dialect: 'mysql',
host: '127.0.0.1',
port: 3306,
pool: {
maxConnections: 10,
minConnections: 0,
maxIdleTime: 30000
}
},
registryHost:'localhost:7001',
scopes:['@icepy']
}

|

然后我们可以使用这两个函数来启动cnpmjs.org:

|

1
2
3
4
5

|

const cnpm = require('cnpmjs.org');
const config = require('./config');
cnpm.startWorker(config);
cnpm.startSync(config);

|

|

1
2

|

$ node index.js
[Sat Jun 02 2018 13:21:59 GMT+0800 (CST)] [worker:2888] Server started, registry server listen at 127.0.0.1:7001, web listen at 127.0.0.1:7002, cluster: false

|

偷懒的给大家演示一下,正式环境不要像我这样。

直接在.npmrc 中配置 registry=http://localhost:7001/

登录本地的npm:

用户名和邮箱输入在config.js文件中配置好的,密码随便填。

创建一个项目:

|

1
2
3

|

$ mkdir test && cd test
$ npm init -y
$ touch index.js

|

将package.json文件中的name修改为@icepy/test

上传:

安装:

|

1
2
3

|

$ mkdir test1 && cd test1
$ npm init -y
$ npm i @icepy/test --save

|

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。