Sinopia搭建私有仓库坎坷之路
公司内部项目需要托管私有包到内部服务器,需要搭建私有NPM仓库,本文记录了使用Sinopia在局域网搭建私有仓库中遇到的各种问题和解决方案
- 首先直接安装Sinopia,一般情况下总会报错的
npm install -g sinopia
可能遇到的错误:- python环境没安装
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
sinopia依赖node-gyp,node-gyp依赖python2.7,所以需要安装python2.7,并且记得设置环境变量python - fs-ext/crypt3报错
可以找到sinopia安装目录下的package.json文件,删掉其中的fs-ext/crypt3引用
optionalDependencies: # those are native modules that could fail to compile # and unavailable on windows fs-ext: '>=0.4.1 <1.0.0-0' crypt3: '>=0.1.6 <1.0.0-0' # for sinopia-htpasswd
删除sinopia安装目录node_modules里的fs-ext和crypt3相关的包,否则执行npm添加用户和登陆验证时会报错。包括:.0.2.0@crypt3,.0.6.0@fs-ext,crypt3和fs-ext以及sinopia-htpasswd\node_modules下的crypt3和fs-ext(如果有的话)
- python环境没安装
- 运行
- pm2
pm2 start sinopia
- 直接启动
sinopia
pm2启动时是后台运行,直接启动是前台运行。
此处推荐使用pm2启动设置开机启动:
pm2 start sinopia
pm2 save
pm2 startup
默认情况下搭建的sinopia仓库只能本机访问,如果需要暴露给外部访问的话有两种方式:
- 参数控制:
sinopia -l targetIP:4873
向targetIP开放访问权限,如果是任何机器配置成0.0.0.0:4873 - 配置文件:
默认情况下启动sinopia后可以看到sinopia启动配置文件
打开config.yaml文件,在尾部追加listen 0.0.0.0:4873
,之后每次sinopia启动自带追加的参数。
- pm2
- 实际项目应用
- 把自定义包开发完成之后,在工作目录下安装nrm仓库管理工具。
npm install -g nrm
- 在nrm列表注册上述私有仓库
- 查看并切换到私有仓库
- npm登录
- 模块发布
如果忘记更新package.json的版本号时就发布,会报错。
修改package.json版本号之后再发布:
- 此时查看私有仓库页面,可以看到刚才发布的模块
- 在其他项目中使用刚才发布的模块
- 最后记得把nrm源切换回来。
- 把自定义包开发完成之后,在工作目录下安装nrm仓库管理工具。
Written on September 26, 2018