成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

選擇 npm 包時避免踩坑的五條建議

開發 前端
面對茫茫多的 package,在選擇第三方 NPM 包時應該關注些什么?

每個開發人員都使用過 npm install 安裝依賴。截止目前 NPM 平臺上已經托管超過 190w 個包了,面對茫茫多的 package,在選擇第三方 NPM 包時應該關注些什么?

這里為大家介紹 五 條建議。

1. 檢查開源許可證(License)

開源許可證是一種法律許可。通過它,版權擁有人明確允許,用戶可以免費地使用、修改、共享版權軟件。

版權法默認禁止共享,也就是說,沒有許可證的軟件,就等同于保留版權,雖然開源了,用戶只能看看源碼,不能用,一用就會侵犯版權。所以軟件開源的話,必須明確地授予用戶開源許可證。

可以在 NPM 平臺上查看包的 License

License 通常分兩大類:"CopyLeft( 著佐權 )" 和 "Permissive( 寬松式 )":

  • CopyLeft:如果你使用了這個包,那么你的代碼也必須開源。這對一些商業化的項目不太友好,比如 GPL 和 LGPL 協議。
  • Permissive:對包做了最低限度的使用限制,允許閉源,可以說幾乎沒有限制,但是各自又有一些區別,具體見下圖。

我們可以用 license-checker [1] 工具來一次性檢查項目中的 NPM 包是否都是合規的。

2. 看貢獻頻率和下載量

NPM 平臺也可以查看包的每周下載量和趨勢圖,數字越大意味著使用的人越多。

由于社區里有很多功能類似的包,比如 moment.js  dayjs 這類時間日期庫。 NPM trends [2] 可以同時比較多個包的下載量增長趨勢,從而更直觀地了解它們的受歡迎程度。

另外,GitHub 倉庫的 stars、 forks、 commit frequency 和 contributors 等相關指標也可以側面反映受歡迎程度。

3. 權衡包體積大小

對于前端來說,優化性能最直接的手段就是 降低代碼包大小 。所以選擇第三方包時,也要考慮它的包體積。

bundlephobia [3] 可以對包體積進行可視化分析。從下圖可以看出, moment.js 打包后會有將近 300 kB,gzip 壓縮后會有 70kB。

 dayjs 打包后只有 6 kB ,遠小于 moment.js 

對于像微信小程序這樣對代碼包大小有明確限制的項目來說,輕量級的 dayjs 是更好的選擇。

4. 是否有大型團隊在進行維護

盡管大部分的 NPM 包都包含較全的文檔,但是往往也都存在一些兼容性、JS 異常或性能相關的 issue。因此如果背后有大型團隊在進行維護,我們使用起來會更放心。

可以關注以下幾個方面:

Used By 和 Contributors 數量

數量越多意味著你不是早期用戶,很多開發者已經幫你趟過水了。

Contributors 視圖

可以直觀地看到貢獻者的貢獻頻率,如果很多都頻繁貢獻,意味著倉庫受到社區更多的關注和支持。

Community Standards

將倉庫與開源社區的規范標準進行比較,達到的標準越多意味著這個倉庫越成熟。

5. 評估安全性

包安全性是選擇 NPM 包的另一個關鍵因素,在倉庫的「 Security 」tab 下可以看到它的安全策略。

如果維護者已經采取了措施來確保安全性,會顯示 已激活 

對于項目中已有的 NPM 依賴,可以使用命令 npm audit 來進行安全性檢查。

npmgraph [4] 能夠對包進行依賴可視化分析來確保沒有安全漏洞,然后再安裝到項目當中。

總結

回顧一下選擇第三方 NPM 包的 5 條最佳實踐:

  • 檢查開源許可證
  • 看貢獻頻率和下載量
  • 權衡包體積大小
  • 是否有大型開發團隊在進行維護
  • 評估安全性

在做選擇時,我們最好能根據以上維度產出一份調研文檔,并在團隊內分享和討論,最終得出一致的結論。

責任編輯:張燕妮 來源: 小李的前端小屋
相關推薦

2024-04-10 08:39:56

BigDecimal浮點數二進制

2021-06-09 08:21:14

Webpack環境變量前端

2023-06-01 07:37:48

級別事務調度

2016-08-18 15:15:47

2022-11-03 08:26:47

Terraform系統運維

2025-04-29 10:17:42

2024-02-04 08:26:38

線程池參數內存

2023-11-18 18:36:17

defer語句延遲

2020-08-10 06:47:31

CSSTRouBLe前端

2024-03-11 18:17:18

Python字符串分隔符

2024-11-20 18:16:39

MyBatis批量操作數據庫

2019-12-05 14:19:20

設計用戶搜索

2021-07-05 07:55:11

PC端移動端設計

2019-10-30 14:44:41

Prometheus開源監控系統

2023-02-20 08:11:04

2021-12-21 08:00:00

Kubernetes集群容器

2023-01-18 23:20:25

編程開發

2020-09-15 08:46:26

Kubernetes探針服務端

2024-04-01 08:05:27

Go開發Java

2017-07-17 15:46:20

Oracle并行機制
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品视频一二三 | 日韩国产黄色片 | 欧美精品一二三 | 亚洲一区二区三区视频 | 性高湖久久久久久久久aaaaa | 精品国产区| 一级毛片观看 | 亚洲字幕在线观看 | www.亚洲成人网 | 日韩超碰在线 | 在线欧美亚洲 | 国产日韩欧美一区 | 久久成人一区 | 成人影院免费视频 | 精品91久久 | 精品国产乱码久久久久久丨区2区 | 日韩中文一区二区三区 | 91精品久久久久久久久久小网站 | 日本超碰 | 99福利| 黄a在线播放 | 成人在线精品视频 | 欧美午夜精品久久久久免费视 | 97伦理影院| 久久伊人精品一区二区三区 | 国产高清精品一区二区三区 | 久久新 | 精品一级 | 无码一区二区三区视频 | 亚洲精品视频二区 | 日韩有码一区 | 在线观看中文字幕dvd播放 | 国产在视频一区二区三区吞精 | 久久亚洲一区二区三区四区 | 四虎成人av | 国产精品永久免费 | 偷牌自拍 | 美女福利视频一区 | 国户精品久久久久久久久久久不卡 | 精品一区二区观看 | 国产高清区 |