github: https://github.com/rlidwka/sinopia
安装
1 2 3
| # installation and starting (application will create default # config in config.yaml you can edit later) $ npm install -g sinopia
|
如果需要https支持:
1 2 3
| # if you use HTTPS, add an appropriate CA information # ("null" means get CA list from OS) $ npm set ca null
|
启动
1 2 3 4 5
| # 使用默认配置的方式 $ sinopia # 指定配置文件和监听端口的方式 $ sinopia --config ./config/webl.yaml --listen 0.0.0.0:4873
|
启动后,访问 http://localhost:4873/
可以看到下面的页面,里面列出来了所有的【私有】模块
使用pm2
启动:(守护进程, 部署服务器时一定要用这种启动方式)
如果没有安装pm2,先安装npm install pm2 -g
1
| $ pm2 start which sinopia
|
sinopia服务端配置
sinopia运行后,会打印出来默认的配置文件位置
1 2 3
| le0zh@ProDesk:~/code/router-mock-server$ sinopia warn --- config file - /home/le0zh/.config/sinopia/config.yaml warn --- http address - http://localhost:4873/
|
其中config.yaml
就是主要的配置文件,同时其同级目录下会有htpasswd
文件(添加用户后,自动创建的,保存认证信息)。
另外还有一个storage
文件夹,用于存放package,其目录在config.yaml
中配置。
下面是修改过的config.yaml
,注意注释:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| storage: ./storage //npm包存放的路径 auth: htpasswd: file: ./htpasswd max_users: -1 uplinks: npmjs: url: http://registry.npm.taobao.org/ packages: 'react-native': access: $all publish: $authenticated '@*/*': access: $all publish: $authenticated '*': access: $all publish: $authenticated proxy: npmjs logs: - {type: stdout, format: pretty, level: http} listen: 0.0.0.0:4873
|
覆盖public包
比如我们的需求是,覆盖react-native的public包,使用我们自己的包,配置的方法就是在上面package节点,增加一个入口,同时移除其proxy属性即可。
注意:有可能有缓存,导致publish失败,这时候可以修改version为更高的版本,或者到storage文件夹下删除对应的缓存包即可!!
客户端使用
开发人员其实只需要关注如何使用
首先需要修改npm配置的registry,有两种方式:
永久的方式:
1 2
| # npm configuration $ npm set registry http://localhost:4873/
|
可以使用命令$ npm config get registry
检查自己当前的registry源配置。
将本机的npm直接指向私有服务器,之后按正常的方式使用npm就可以了。
临时的方式:
在使用npm命令时,加上--registry
参数,比如:
1
| npm install react --save --registry http://localhost:4873/
|
但是推荐使用nrm管理npm的源:
1 2 3
| $ npm install -g nrm $ nrm add XXXXX http://XXXXXX:4873 $ nrm use XXXX
|
1 2 3
| $ nrm --help $ nrm list $ nrm use taobao
|
比如:
1 2
| $ nrm add webl http://10.57.177.232:4873/ $ nrm use webl
|