本页使用了标题或全文手工转换

npm

维基百科,自由的百科全书
(重定向自Node包管理器
跳转至: 导航搜索
npm
Npm-logo.svg
開發者 艾萨克·施吕特、福里斯特·诺维尔、罗伯特·科瓦尔斯基、多梅尼克·德尼科拉、蒂姆·奥克斯利、埃文·马尔等
穩定版本 4.0.3(2016年11月13日,​25天前​(2016-11-13
預覽版本 4.0.5(2016年12月2日,​6天前​(2016-12-02
编程语言 JavaScript
系統平台 Linux
macOS
Windows
许可协议 Artistic License 2.0
網站 www.npmjs.com

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

历史[编辑]

npm完全用JavaScript写成,最初由艾萨克·施吕特(Isaac Z. Schlueter)开发。艾萨克表示自己意识到“模块管理很糟糕”的问题,并看到了PHPPEARPerlCPAN等软件的缺点,于是编写了npm。[1]

说明[编辑]

npm会随着Node.js自动安装[2]。npm模块仓库提供了一个名为“registry”的查询服务,用户可通过本地的npm命令下载并安装指定模块。此外用户也可以通过npm把自己设计的模块分发到registry上面[3]

registry上面的模块通常采用CommonJS格式,而且都包含一个JSON格式的元文件[4]。截止到2016年7月,npm的registry上面已经注册了超过280,000个模块[5]

npm的模块以“先到先得”的原则注册,各模块作者不会发生混乱。然而一旦有人撤回自己发布的模块,那么不仅会使依赖那个模块的项目出现问题,还会带来安全风险[6]。npm的registry没有审核机制,因此会存在一些低质量、不安全甚至有害的模块[4],不过npm服务器的管理员也可以删除有害模块并阻止不怀好意的用户[7]

另外也有人为npm制作了统计功能,这样可以让开发者了解各模块的使用情况,帮助他们选择合适的模块。[8]

使用[编辑]

npm可以管理本地项目的所需模块并自动维护依赖情况,也可以管理全局安装的JavaScript工具[9]

如果一个项目中存在package.json文件,那么用户可以直接使用npm install命令自动安装和维护当前项目所需的所有模块[10]。在package.json文件中,开发者可以指定每个依赖项的版本范围,这样既可以保证模块自动更新,又不会因为所需模块功能大幅变化导致项目出现问题[11]。开发者也可以选择将模块固定在某个版本之上[12]

參閱[编辑]

外部連結[编辑]

引用[编辑]

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