在公司中,我們有時候寫的公共的程式碼,需要提取出來,此時需要一個私服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