轉自: https://liaolongdong.com/2019/01/24/publish-public-npm.htmlhtml
如何開發一個npm包併發布到npm中央倉庫
需求背景:平時在項目工做中可能會用到不少通用性的代碼,好比,框架類、工具類以及公用的業務邏輯代碼等等,經過打包發佈到npm中央倉庫或者私有倉庫,來進行維護和託管代碼,方便公用代碼的使用,若是涉及到不方便公開的代碼組件能夠發佈到私有倉庫。npm
npm包命名規則及文件夾結構
用模塊的名稱命名根目錄,npm包名不能重複json
每一個npm包根目錄下都包含一個index.js文件和package.json文件併發
src目錄,用於放置未壓縮的源碼框架
dist目錄,用於放置壓縮後的代碼工具
使用package.json文件的規格來描述本模塊ui
發佈npm到npm中央倉庫(公共倉庫)
一、註冊npm帳號
咱們在發佈npm包以前,要去npm官網註冊一個帳號,註冊完帳號之後,點擊郵件連接完成驗證this
二、編寫模塊
首相,建立publishNpm文件夾,在該文件夾下添加helloworld.js文件和index.js文件,代碼以下:debug
// 建立模塊目錄 mkdir publishNpm // 進入目錄 cd publishNpm // 建立helloworld.js文件和index.js文件 touch helloworld.js index.js // helloworld.js文件 function helloworld (name) { console.log('hello world,', name); } exports.helloworld = helloworld; // index.js文件 var helloworld = require('./helloworld'); console.log('helloworld', helloworld); helloworld.helloworld('better');
接下來,在publishNpm目錄下,執行npm init命令,初始化package.json文件code
npm init // package.json 文件 { "name": "lld-npm-demo", "version": "1.0.1", "description": "publish npm demo", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "better", "license": "ISC" }
注意:一、npm包名稱name的值不能和已經存在的npm包名相同;二、每次版本更新都必須修改版本號version的值
三、發佈npm到npm公共倉庫
添加帳戶
npm adduser
輸入用戶名、密碼和郵箱
查看當前登陸的用戶
npm who am i
發佈npm包
npm publish
發佈成功之後,就能夠在npm我的中心看到剛剛發佈的npm包了
更新npm包
和發佈npm同樣都是使用npm publish命令,更新發布以前必須修改版本號
使用npm
和咱們平時使用npm同樣
npm install lld-npm-demo
發佈npm常見錯誤
一、npm倉庫設置了淘寶鏡像
npm ERR! code E403 npm ERR! 403 Forbidden - PUT https://registry.npm.taobao.org/lld-npm-demo - no_perms npm ERR! A complete log of this run can be found in: npm ERR! /Users/better/.npm/_logs/2019-01-24T02_08_54_914Z-debug.log 解決方案: // 檢查倉庫是否被設成了淘寶鏡像庫(https://registry.npm.taobao.org/) npm config get registry // 若是設置了淘寶鏡像,執行如下命令 npm config set registry=http://registry.npmjs.org // 解決問題後從新發布 npm publish // 發佈成功之後,在設會淘寶鏡像 npm config set registry=https://registry.npm.taobao.org/
二、帳號未登陸
npm ERR! code E401 npm ERR! 401 Unauthorized - PUT http://registry.npmjs.org/lld-npm-demo - You must be logged in to publish packages. npm ERR! A complete log of this run can be found in: npm ERR! /Users/better/.npm/_logs/2019-01-24T02_13_00_370Z-debug.log 解決方案: // 登陸用戶 npm login npm adduser // 登陸用戶之後從新發布 npm publish
三、從新發布未修改版本號
npm ERR! code E403 npm ERR! 403 Forbidden - PUT http://registry.npmjs.org/lld-npm-demo - You cannot publish over the previously published versions: 1.0.0. npm ERR! A complete log of this run can be found in: npm ERR! /Users/better/.npm/_logs/2019-01-24T02_55_19_409Z-debug.log 解決方案:在package.json文件修改版本號