由於公司項目緣由,須要私有npmhtml
使用以前,咱們先來個哲學三問
前端
由於、開源免費、穩定vue
(爲何要知道原理,之因此我要寫這個是由於我以爲只有先了解原理以後,後面的文檔才方便理解,纔有目標,纔有行動指南)node
其實就是搭建一個服務,而後模擬npm,而這時候若是是本地的包就下載,不是本地的就用npm的。python
來個圖webpack
安裝有能夠docker、也能夠npm,咱們使用npm安裝。git
npm install -g verdaccio --unsafe-perm
複製代碼
這時候可能會報權限錯誤,請用管理員的方式運行終端。github
而後繼續。web
這時候完成後可能會提示木有python環境,不用管它。docker
輸入
verdaccio
複製代碼
當作功了沒有。
這時候會輸出以下
看到
config file
複製代碼
這一行了沒有,這個有一個指向路徑,找不到config配置文件,就到這裏查看。
這個文件能夠修改一些配置,你如今用不到,之後必定能夠用到。
默認剛安裝,只能本身訪問,內網的人訪問不了,這時候我修改配置文件
vim C:\Users\admin\AppData\Roaming\verdaccio\config.yaml
複製代碼
而後 在最下面添加以下代碼
listen:
0.0.0.0:4873
複製代碼
這樣同事就能夠一塊兒訪問啦,否則等着報錯吧。
咱們剛剛漏說了一點,verdaccio
是sinopia
的修改版,也就是fork出來的一個分支。由於sinopia
不維護了,而後你們好像也遇到不少坑,因此不推薦直接使用sinopia,sinopia是nodejs寫的,因此verdaccio也是,這對咱們前端很友好。
剛剛咱們執行verdaccio
的時候,會有一個端口,這個端口是4873
,而後咱們也修改了內網可見,因此這時候能夠localhost:4873訪問,在瀏覽器訪問看看,這時候是空的,咱們來添加一下。
npm init
複製代碼
而後默認是指向index.js,因此咱們在目錄下新建一個index.js文件。
而後寫代碼,代碼你隨便寫,能夠簡單來個函數,好比
module.exports.Hello = function(name){
console.log("Hello " + name);
}
複製代碼
寫好以後開始發佈。
npm adduser --registry http://localhost:4873
npm login --registry=http://localhost:4873
npm publish
複製代碼
恭喜你 發佈成功,這時候繼續訪問剛剛打開的網站,或者刷新
如上所示,已經發部成功了
這時候就能夠食用(使用)了
一種是
npm set registry http://localhost:4873/
npm install <你的包名>
複製代碼
一種是 npm install <你的包名> --registry=http://localhost:4873
發連接給同事安裝,請用內網IP哦。
多是你新建文件開始install,可是木有npm init。因此失敗。
好了 很完美
npm unpublish <你的包名> --force
複製代碼
(被打了不要說從我這裏看到的
you may need an appropriate loader to handle this file type.
?兔大說: module parser failed, 是webpack不認識,默認都不會去管node_modules裏的代碼.
對於兔說的,按個人理解是 babel忽略從node_modules的引入,而後vue-loader引入後又交給了webpack,而後webpack不處理就gg了。
解決方案就是不要直接導出源碼
新建一個 .babelrc
{
"presets": [
"@babel/preset-env",
"vue"
],
"plugins": []
}
複製代碼
在package.json加入build
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "babel src --out-dir lib --copy-files && npm publish --registry=http://localhost:4873"
},
複製代碼
想要了解更多babel cli語法,見下面的相關連接。
而後每次發佈的時候,先修改version,而後執行npm run build
這時候代碼會跑到lib裏面導入lib裏面。引入lib裏面的代碼便可。
(默認vue-loader,會自動加上lib,不過最好加上lib路徑,哈哈)
須要安裝babel依賴哦,否則會報錯,跟我一塊兒安裝依賴吧
npm install --save-dev babel-cli @babel/preset-env
複製代碼
目錄以下
也能夠更具阮老師的下面配置
# ES2015轉碼規則
$ npm install --save-dev babel-preset-es2015
npm install --save-dev babel-preset-stage-2
# ES7不一樣階段語法提案的轉碼規則(共有4個階段),選裝一個
$ npm install --save-dev babel-preset-stage-0
$ npm install --save-dev babel-preset-stage-1
$ npm install --save-dev babel-preset-stage-2
$ npm install --save-dev babel-preset-stage-3
複製代碼
{
"presets": [
"es2015",
"stage-2"
],
"plugins": []
}
複製代碼
github.com/verdaccio/v…
zhaomenghuan.js.org/blog/npm-pr…
babeljs.io/docs/en/6.2…
www.ruanyifeng.com/blog/2016/0…