fbpx
维基百科

npm

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

npm
開發者艾萨克·施吕特、福里斯特·诺维尔、罗伯特·科瓦尔斯基、多梅尼克·德尼科拉、蒂姆·奥克斯利、埃文·马尔等
目前版本
  • 9.6.2 (2023年3月15日)[1]
源代码库
  • github.com/npm/cli
编程语言JavaScript
系統平台Linux
macOS
Windows
许可协议艺术许可协议 2.0
网站www.npmjs.com/ 

历史

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

2020年3月16 日,GitHub CEO Nat Friedman 宣布 GitHub 已签署收购 NPM(npm 背后的公司)的协议,并表示 npm 加入 GitHub 后会继续免费提供公共软件注册中心服务。

说明

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. ^ 1.0 1.1 Release 9.6.2. 2023年3月15日 [2023年3月20日]. 
  2. ^ Schlueter, Isaac Z. Forget CommonJS. It's dead. **We are server side JavaScript.**. GitHub. 25 March 2013 [2015-01-05]. (原始内容于2015-05-08). 
  3. ^ Dierx, Peter. A Beginner's Guide to npm — the Node Package Manager. sitepoint. 30 March 2016 [22 July 2016]. (原始内容于2017-02-04). 
  4. ^ Ampersand.js. Ampersand.js - Learn. ampersandjs.com. [22 July 2016]. (原始内容于2016-10-04). 
  5. ^ 5.0 5.1 Ojamaa, Andres; Duuna, Karl. Assessing the Security of Node.js Platform. IEEE Xplore. 2012 [22 July 2016]. (原始内容于2019-10-18). 
  6. ^ Kennedy, Hugh; DeVay, Paul. . Nsight. [22 July 2016]. (原始内容存档于2016年7月8日). 
  7. ^ Yegulalp, Serdar. How one yanked JavaScript package wreaked havoc. InfoWorld. 23 March 2016 [22 July 2016]. (原始内容于2016-12-05). 
  8. ^ Williams, Chris. How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript. The Register. [17 April 2016]. (原始内容于2016-03-24). 
  9. ^ npm, Inc. npm. npm. [22 October 2016]. (原始内容于2016-10-22). 
  10. ^ npm-stat: download statistics for NPM packages. [2016-12-07]. (原始内容于2016-08-11). 
  11. ^ Ellingwood, Justin. How To Use npm to Manage Node.js Packages on a Linux Server. DigitalOcean. [22 October 2016]. (原始内容于2016-10-22). 
  12. ^ npm-install. docs.npmjs. [22 October 2016]. (原始内容于2016-12-03). 
  13. ^ semver. docs.npmjs. [22 October 2016]. (原始内容于2016-12-03). 
  14. ^ npm-version. docs.npm. [29 October 2016]. (原始内容于2016-12-03). 

外部連結

  • 官方网站

参见

全称, node, package, manager, node包管理器, 是node, js預設的, 用javascript編寫的軟體套件管理系統, 開發者艾萨克, 施吕特, 福里斯特, 诺维尔, 罗伯特, 科瓦尔斯基, 多梅尼克, 德尼科拉, 蒂姆, 奥克斯利, 埃文, 马尔等目前版本9, 2023年3月15日, 源代码库github, cli编程语言javascript系統平台linuxmacoswindows许可协议艺术许可协议, 0网站www, 目录, 历史, 说明, 使用, 参考文献, 外部連結, 参见. npm 全称 Node Package Manager 即 node包管理器 是Node js預設的 用JavaScript編寫的軟體套件管理系統 npm開發者艾萨克 施吕特 福里斯特 诺维尔 罗伯特 科瓦尔斯基 多梅尼克 德尼科拉 蒂姆 奥克斯利 埃文 马尔等目前版本9 6 2 2023年3月15日 1 源代码库github wbr com wbr npm wbr cli编程语言JavaScript系統平台LinuxmacOSWindows许可协议艺术许可协议 2 0网站www wbr npmjs wbr com 目录 1 历史 2 说明 3 使用 4 参考文献 5 外部連結 6 参见历史 编辑npm完全用JavaScript写成 最初由艾萨克 施吕特 Isaac Z Schlueter 开发 艾萨克表示自己意识到 模块管理很糟糕 的问题 并看到了PHP的PEAR与Perl的CPAN等软件的缺点 于是编写了npm 2 2020年3月16 日 GitHub CEO Nat Friedman 宣布 GitHub 已签署收购 NPM npm 背后的公司 的协议 并表示 npm 加入 GitHub 后会继续免费提供公共软件注册中心服务 说明 编辑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 0 1 1 Release 9 6 2 2023年3月15日 2023年3月20日 Schlueter Isaac Z Forget CommonJS It s dead We are server side JavaScript GitHub 25 March 2013 2015 01 05 原始内容存档于2015 05 08 Dierx Peter A Beginner s Guide to npm the Node Package Manager sitepoint 30 March 2016 22 July 2016 原始内容存档于2017 02 04 Ampersand js Ampersand js Learn ampersandjs com 22 July 2016 原始内容存档于2016 10 04 5 0 5 1 Ojamaa Andres Duuna Karl Assessing the Security of Node js Platform IEEE Xplore 2012 22 July 2016 原始内容存档于2019 10 18 Kennedy Hugh DeVay Paul Understanding npm Nsight 22 July 2016 原始内容存档于2016年7月8日 Yegulalp Serdar How one yanked JavaScript package wreaked havoc InfoWorld 23 March 2016 22 July 2016 原始内容存档于2016 12 05 Williams Chris How one developer just broke Node Babel and thousands of projects in 11 lines of JavaScript The Register 17 April 2016 原始内容存档于2016 03 24 npm Inc npm npm 22 October 2016 原始内容存档于2016 10 22 npm stat download statistics for NPM packages 2016 12 07 原始内容存档于2016 08 11 Ellingwood Justin How To Use npm to Manage Node js Packages on a Linux Server DigitalOcean 22 October 2016 原始内容存档于2016 10 22 npm install docs npmjs 22 October 2016 原始内容存档于2016 12 03 semver docs npmjs 22 October 2016 原始内容存档于2016 12 03 npm version docs npm 29 October 2016 原始内容存档于2016 12 03 外部連結 编辑官方网站参见 编辑 自由软件主题 JavaScript V8 JavaScript引擎 Node js 取自 https zh wikipedia org w index php title Npm amp oldid 71493670, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。