iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0

Day 25 把專案發佈到 npm

在 JavaScript 的生態圈中,npm 無疑是一個非常重要的工具,畢竟現在開發者如果什麼東西都要重新發明輪子,那大概時間永遠都不夠用,所以要站在巨人的肩膀上,才能夠站的更高,看的更遠。

但你有想過 npm 上面的套件都是怎麼來的嗎?它除了是套件管理工具之外,還是一個發佈套件的平台,所以筆者這個專案會直接發佈到 npm 上,讓其他開發者可以直接透過 npm 來安裝並使用這個 SDK。

package.json

對於一個套件來說,package.json 的重要性應該不用筆者多說,這裡面會記錄這個套件的基本資料、版本、相依的套件以及提供什麼東西給其他開發者使用。

填寫基本資料

首先我們需要填寫基本資料,這些資料會顯示在 npm 上,讓其他開發者可以看到這個套件的基本資料。

建議讀者可以搭配原始碼一起閱讀,原始碼網址為 https://github.com/taichunmin/chameleon-ultra.js/blob/master/package.json

semantic versioning

npm 是採用 semantic versioning 這個版本號的規則,對於已經熟悉這個規則的開發者來說,很容易可以辨識這次更新是不是重大更新。另外,npm 對於已發佈的套件基本上限制很多,很難撤回已發佈的版本,也不能重新上傳已經上傳過的版本號,所以筆者會建議如果讀者也想發佈 npm,可以先花點時間了解一下這個版本號的規則。

README.md

在之前的文章,筆者已經分享過 README.md,但在 npm 上面也會顯示套件的 README.md,所以也需要用心把這個檔案寫好,並且注意網址都要使用絕對路徑,這樣才不會發生連結失效的問題。

排除不需要發佈的檔案

建議讀者可以搭配原始碼一起閱讀,原始碼網址為 https://github.com/taichunmin/chameleon-ultra.js/blob/master/.npmignore

在把 SDK 發佈到 npm 之前,我們需要先排除不需要上傳到 npm 上的檔案,以降低套件的檔案大小。

首先筆者會把 .gitignore 複製成 .npmignore,然後把 dist 資料夾從 .npmignore 刪除。

然後筆者就會使用 npm publish --dry-run 來檢查並列出哪些檔案會被上傳:

$ npm publish --dry-run
npm notice 📦  chameleon-ultra.js@0.1.2
npm notice === Tarball Contents === 
# 會被上傳的檔案清單
npm notice === Tarball Details === 
npm notice name:          chameleon-ultra.js                      
npm notice version:       0.1.2                                   
npm notice filename:      chameleon-ultra.js-0.1.2.tgz            
npm notice package size:  202.0 kB                                
npm notice unpacked size: 1.1 MB                                  
npm notice shasum:        8bfdafb7188e67b229db9c810ccbb7b8165f09c2
npm notice integrity:     sha512-qdi98BiFmeeih[...]Fvo8qQM/vpekg==
npm notice total files:   45                                      
npm WARN This command requires you to be logged in to https://registry.yarnpkg.com (dry-run)
npm notice Publishing to https://registry.yarnpkg.com with tag latest and default access (dry-run)

當這個指令執行完以後,就需要仔細查看哪些檔案是不需要的,然後一一列舉到 .npmignore 檔案中,來排除不需要上傳的檔案。

參考連結


上一篇
Day 24 如何撰寫 README.md
下一篇
Day 26 GitHub Actions
系列文
用 Web Serial/Bluetooth 來控制 ChameleonUltra 硬體30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言