# 不知如何選套件？教你 4 招來避雷！（上）

- 作者：林鼎淵（Dean Lin）
- 網址：https://deanlin.net/blog/202209/choosing-packages-1/
- 發布：2022-09-21
- 主題：技術教學
- 系列：套件的使用與選擇
- 標籤：科技島專欄、套件
- 摘要：我們身處在一個開源工具大爆炸的時代，每天都有許多套件發布到平台上供大家使用；但正因為開源工具爆炸，我們要面對的不是沒有工具，而是工具太多不知道怎麼選，所以在了解套件的重要性後，更重要的是要知道如何選出適合的套件。

我們身處在一個開源工具大爆炸的時代，每天都有許多套件發布到平台上供大家使用；但正因為開源工具爆炸，我們要面對的不是沒有工具，而是工具太多不知道怎麼選，所以在了解套件的重要性後，更重要的是要知道如何選出適合的套件。

> 如果你還不清楚套件對工程師的重要性，可以先參考[這篇文章](https://deanlin.net/blog/202209/why-engineers-use-packages/)。

套件之所以會有這麼多，是因為不管大神還是新手都可以發布套件，這造成套件本身的良莠不齊，不過我們可以透過文中提供的「方法」，初步判斷套件是否符合需求，以及品質是否穩定。

> 本篇文章以[npm 套件](https://www.npmjs.com/)舉例。

## 套件活躍度

筆者會從 3 個面向綜合考量套件活躍度：

1. **套件最後發布時間( Last publish)**：太久沒更新的套件請謹慎選用。
2. **每週下載次數(Weekly Downloads)**：下載人數多的套件穩定性通常較高，至少遇到問題時比較有人一起討論。
3. **版本(Version)**：一般來說 1.0.0 以前的版本會有穩定性上的疑慮，盡可能避免使用。

## 套件 Issues 處理狀況

除了活躍度外，該套件「open issues 與 closed issues 的比例」也是重要指標；**如果 open issues 的比例超過 20%，筆者良心建議你要點進去看看別人遇到了哪些問題**。

> 太新的套件可能不穩定、太舊的套件可能沒人維護。

## 閱讀文件確認是否符合需求

有些套件光看名稱好像是自己想要的，實際用下來卻發現缺東缺西，為了避免這類的問題發生，導入套件前請先詳閱文件。

> 盡量不要選文件讓人難以理解的套件。

## 先試用範例程式碼（sample code）

有些簡介把套件的功能吹捧的超強，但這個套件到底能否導入專案，要先試用範例程式才知道。常見問題如下：

- **與專案的 Node.js 版本不合**：因為 Node.js 版本更新速度極快，而有些套件的功能是相依於 Node.js 版本的；如果專案有歷史背景難以升級，就只能先去看套件的 release note，祈禱套件過去有發佈與專案 Node.js 相合的版本。與此同時，也一同評估將專案 Node.js 升版的必要性。
- **說明文件根本是錯的**：因為套件通常是開源免費的，所以提供的文件不一定都是對的，如果你一直執行失敗，可以先到 open issues 看看有沒有難兄難弟。

相信文中所提到的 4 個方法，可以很大程度幫大家避雷了，如果您有其他選套件的好方法，也歡迎留言分享。

[在下篇文章中](https://deanlin.net/blog/202209/choosing-packages-2/)，筆者會舉出實際案例，幫助大家學以致用。

---

關於作者：林鼎淵（Dean Lin），台灣的生成式 AI 企業內訓講師、外商資安公司軟體專家，也是生成式 AI 創新學院發起人。出版 7 本書（包含全台第一本 ChatGPT 應用專書），兩度獲得 iThome 鐵人賽佳作，累積上百場授課與顧問經驗。（https://deanlin.net/about/）
引用時請附上原文網址：https://deanlin.net/blog/202209/choosing-packages-1/
