如何開發一個npm包並發布到npm中央倉庫


轉自: https://liaolongdong.com/2019/01/24/publish-public-npm.html

如何開發一個npm包並發布到npm中央倉庫
需求背景:平時在項目工作中可能會用到很多通用性的代碼,比如,框架類、工具類以及公用的業務邏輯代碼等等,通過打包發布到npm中央倉庫或者私有倉庫,來進行維護和托管代碼,方便公用代碼的使用,如果涉及到不方便公開的代碼組件可以發布到私有倉庫。

npm包命名規則及文件夾結構
用模塊的名稱命名根目錄,npm包名不能重復

每個npm包根目錄下都包含一個index.js文件和package.json文件

src目錄,用於放置未壓縮的源碼

dist目錄,用於放置壓縮后的代碼

使用package.json文件的規格來描述本模塊

發布npm到npm中央倉庫(公共倉庫)
1、注冊npm賬號
我們在發布npm包之前,要去npm官網注冊一個賬號,注冊完賬號以后,點擊郵件鏈接完成驗證

2、編寫模塊
首相,創建publishNpm文件夾,在該文件夾下添加helloworld.js文件和index.js文件,代碼如下:

// 創建模塊目錄
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文件

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"
}

  

注意:1、npm包名稱name的值不能和已經存在的npm包名相同;2、每次版本更新都必須修改版本號version的值

3、發布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常見錯誤
1、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/

  

2、賬號未登錄

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

  

3、重新發布未修改版本號

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文件修改版本號

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM