跳至內容

npm

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

這是本頁的一個歷史版本,由59.100.233.138留言2018年1月31日 (三) 18:50編輯。這可能和目前版本存在著巨大的差異。

npm
開發者艾薩克·施呂特、福里斯特·諾維爾、羅伯特·科瓦爾斯基、多梅尼克·德尼科拉、蒂姆·奧克斯利、埃文·馬爾等
目前版本5.6.0(2017年11月28日,​7年前​(2017-11-28[1]
原始碼庫 編輯維基數據鏈結
程式語言JavaScript
平台Linux
macOS
Windows
授權條款藝術授權條款 2.0
網站www.npmjs.com

npm(全稱 Node Package Manager,即「node包管理器」)是Node.js預設的、以JavaScript編寫的軟體套件管理系統

歷史

npm完全用JavaScript寫成,最初由艾薩克·施呂特(Isaac Z. Schlueter)開發。艾薩克表示自己意識到「模組管理很糟糕」的問題,並看到了PHPPEARPerlCPAN等軟體的缺點,於是編寫了npm。[2]

說明

npm會隨著Node.js自動安裝[3]。npm模組倉庫提供了一個名為「registry」的查詢服務,使用者可通過本地的npm命令下載並安裝指定模組。此外使用者也可以通過npm把自己設計的模組分發到registry上面[4]

registry上面的模組通常採用CommonJS格式,而且都包含一個JSON格式的元檔案[5]。截止到2016年7月,npm的registry上面已經註冊了超過280,000個模組[6]

npm的模組以「先到先得」的原則註冊,各模組作者不會發生混亂。然而一旦有人撤回自己釋出的模組,那麼不僅會使依賴那個模組的專案出現問題,還會帶來安全風險[7]。例如有一個模組叫做「left-pad」,其中只有一個字串對齊的功能。但是,當作者把它從registry裡面移除之後,許多模組便無法正確構建[8]

npm的registry沒有稽核機制,因此會存在一些低品質、不安全甚至有害的模組[5],不過npm伺服器的管理員也可以刪除有害模組並阻止不懷好意的使用者[9]

另外也有人為npm製作了統計功能,這樣可以讓開發者了解各模組的使用情況,幫助他們選擇合適的模組。[10]

使用

npm可以管理本地專案的所需模組並自動維護依賴情況,也可以管理全域安裝的JavaScript工具[11]

如果一個專案中存在package.json檔案,那麼使用者可以直接使用npm install命令自動安裝和維護當前專案所需的所有模組[12]。在package.json檔案中,開發者可以指定每個依賴項的版本範圍,這樣既可以保證模組自動更新,又不會因為所需模組功能大幅變化導致專案出現問題[13]。開發者也可以選擇將模組固定在某個版本之上[14]

參考文獻

  1. ^ Release v5.6.0 · npm/npm. GitHub. 2017-11-28. 
  2. ^ Schlueter, Isaac Z. Forget CommonJS. It's dead. **We are server side JavaScript.**. GitHub. 25 March 2013. 
  3. ^ Dierx, Peter. A Beginner's Guide to npm — the Node Package Manager. sitepoint. 30 March 2016 [22 July 2016]. 
  4. ^ Ampersand.js. Ampersand.js - Learn. ampersandjs.com. [22 July 2016]. 
  5. ^ 5.0 5.1 Ojamaa, Andres; Duuna, Karl. Assessing the Security of Node.js Platform. IEEE Xplore. 2012 [22 July 2016]. 
  6. ^ Kennedy, Hugh; DeVay, Paul. Understanding npm. Nsight. [22 July 2016]. 
  7. ^ Yegulalp, Serdar. How one yanked JavaScript package wreaked havoc. InfoWorld. 23 March 2016 [22 July 2016]. 
  8. ^ Williams, Chris. How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript. The Register. [17 April 2016]. 
  9. ^ npm, Inc. npm. npm. [22 October 2016]. 
  10. ^ npm-stat: download statistics for NPM packages. 
  11. ^ Ellingwood, Justin. How To Use npm to Manage Node.js Packages on a Linux Server. DigitalOcean. [22 October 2016]. 
  12. ^ npm-install. docs.npmjs. [22 October 2016]. 
  13. ^ semver. docs.npmjs. [22 October 2016]. 
  14. ^ npm-version. docs.npm. [29 October 2016]. 

外部連結

參見