如何發布自己的NPM套件

發布 npm 套件的紀錄

如何開始

版控

初始化一個 Git 版控倉庫

1
git init

建立版控忽略清單

此處透過VSCode套件.gitignore generator產生,僅需要透過選取即可自動產生相關的清單

建立 package.json 設定檔

透過預設值建立指令檔,之後再用編輯軟體開啟檔案修改

1
npm init -y

關於發布比較重要的幾個設定,例如:

  1. 程式進入點(main),在這邊的程式定義了一開始你套件從哪一隻程式開始
  2. 版本(version),每一次發布的版本都需要更新
  3. 版控(repository),如果有填寫的話會在 NPM 套件資訊頁面顯示

如何撰寫套件

透過 module.exports 匯出
利用 require 載入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// foo.js
var bar = {
message: "hello",
};
module.exports = {
getFoo: function () {
return { ...bar };
},
};

// main.js
var foo = require("./foo.js");
var result = foo.getFoo();
console.log(result);

記得模組匯出物件時,因為是傳參考,所以需要先複製物件輸出

如何發布套件

發布到 NPM 的話會需要一個帳號,所以還沒有申請的話是無法發布的,申請完畢後只要在指令列打上

1
npm adduser

依照提示輸入帳號、密碼及相關資訊,就會在你的帳號底下新增一組 token,而這個 token 就會在你的電腦中,等到下次要發布就不需要再輸入帳密,在這邊假設已經開發完畢了一個套件,需要發佈到 NPM 其實也很簡單

1
2
# 在package.json目錄下輸入
npm publish

程式就會自動替你將套件發布上去 NPM 了,稍後就可以在 NPM 個人帳號的 package 找到

如何架設私有 registry

1
2
3
4
5
6
7
8
9
docker pull verdaccio/verdaccio

docker run -d -v:/data/verdaccio/storage:/verdaccio/storage --name verdaccio -p 4873:4873 verdaccio/verdaccio

# 替換 registry
npm config set registry http://localhost:4873/

# 輸入帳號、密碼新建一個使用者登入
npm adduser

替換 registry 後,若日常 npm 使用有問題,建議還是透過 npm config edit 指令重設 registry

1
registry=https://registry.npmjs.org/

如何更新套件

更新package.json的 version 版本號碼

你可以透過手動變更package.json,也可以透過npm version <update_Type>的指令

重新執行npm publish

如何使用套件

當套件已經發布上去之後,別的專案要使用可以直接透過下面的指令就可以自動下載套件了

1
npm install <PACKAGE_NAME>

如何取消發布

如果需要撤銷發布,只要輸入下列指令即可,但是請確保是在發布後 72 小時之內做這件事情

1
npm unpublish <PACKAGE_NAME> --force

因為套件發布之後,可能會有人下載使用,如果有其他人依賴你的套件,就會有問題,因此官方對於撤銷發布是不建議的,也因此有很多限制

關於官方對此的政策,可參考npm Unpublish Policy