在公司中,我们有时候写的公共的代码,需要提取出来,此时需要一个私服npm库,把这个公共代码做成一个包,然后在发布到自己的私服npm库上,就可以单独维护了。
这里我用docker for windows演示一下,首先是创建3个目录conf,storage,plugins
然后在conf目录中新建config.yaml文件
storage: /verdaccio/storage plugins: /verdaccio/plugins web: title: Verdaccio auth: htpasswd: file: /verdaccio/conf/htpasswd uplinks: npmjs: url: https://registry.npmjs.org/ packages: '@*/*': access: $all publish: $authenticated proxy: npmjs server: keepAliveTimeout: 60 logs: -{type: stdout, format: pretty, level: http}
接着就可以跑docker容器了: docker run -d --name verdaccio -p 4873:4873 -v ./conf:/verdaccio/conf -v ./storage:/verdaccio/storage -v ./plugins:/verdaccio/plugins verdaccio/verdaccio
跑起来后,先根据提示创建用户npm adduser --registry http://localhost:4873/
,然后登录即可。
登录后就创建自己的npm包,这里我随便写一些,内容是指向index.js。package.json
注意包的名字,前面可以是你的公司名称,后面是具体包名。
再创建.npmignore,忽略node_modules
接着创建.npmrc,告诉它把包上传到指定的私服npm地址上
接着,就可以执行npm publish --registry http://localhost:4873/
把包推送到私服npm上,刷新页面,就可以看到这个包了。
接着到另一个项目中测试能不能拉到这个包。我看网上其他人都是教设置npm set registry http://localhost:4873
后,再拉取。其实这样是不太好的,因为这样直接修改了你的镜像源地址,会导致你在拉取其他互联网包时失败。
正确的做法是先创建.npmrc,然后指定关于这个名字下的所有包都要到这个服务器拉取:
然后执行命令安装npm i @tianping/node
, 可以看到拉取成功了
作者:天平
链接:https://juejin.cn/post/7435096176410165274