npm

来自Local Chinese Wikipedia
imported>AromaTake2025年1月16日 (四) 01:37的版本 意外:​ 增加內部連結)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

页面Module:Infobox/styles.css没有内容。

npm
File:Npm-logo.svg
开发者艾萨克·施吕特、福里斯特·诺维尔、罗伯特·科瓦尔斯基、多梅尼克·德尼科拉、蒂姆·奥克斯利、埃文·马尔等
当前版本Template:Software version
源代码库页面Template:Plainlist/styles.css没有内容。
  • {{URL|example.com|可选的显示文本}}
Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
编程语言JavaScript
引擎页面Template:Plainlist/styles.css没有内容。
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    平台Linux
    macOS
    Windows
    许可协议页面Template:Plainlist/styles.css没有内容。
      Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
      页面Module:Infobox/styles.css没有内容。

      npm(全称 Node Package Manager,即“node包管理器”)是Node.js默认的、用JavaScript编写的软件包管理系统

      历史[编辑]

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

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

      说明[编辑]

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

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

      npm的模块以“先到先得”的原则注册,各模块作者不会发生混乱。然而一旦有人撤回自己发布的模块,那么不仅会使依赖那个模块的项目出现问题,还会带来安全风险[6]。例如有一个模块叫做“left-pad”,其中只有一个字符串对齐的功能。但是,当作者把它从registry里面移除之后,许多模块便无法正确组建[7]

      npm的registry没有审核机制,因此会存在一些低质量、不安全甚至有害的模块[4],然而npm服务器的管理员也可以删除有害模块并阻止不怀好意的用户[8]

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

      使用[编辑]

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

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

      在中国大陆,由于防火长城的干扰,开发者可能需要更换软件源才能正常下载和安装模块。

      意外[编辑]

      package.lua第80行Lua错误:module 'Module:Format link' not found 2016年3月,Azer Koçulu移除了他受欢迎的 left-pad 包。尽管 left-pad 在三小时后重新发布,但它造成了广泛的破坏。[14]npm之后修改了有关政策,以防止将来发生类似事件。[15]

      2022年3月,布兰登·野崎·米勒发布了包含恶意代码的 node-ipc 包版本。使用 node-ipcVue.js 没有将其包固定到安全版本,这意味着 Vue.js 的部分用户可能会受到恶意代码的影响。[16]

      参考文献[编辑]

      1. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      2. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      3. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      4. 4.0 4.1 package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      5. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      6. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      7. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      8. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      9. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      10. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      11. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      12. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      13. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      14. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      15. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found
      16. package.lua第80行Lua错误:module 'Module:Citation/CS1/People' not found

      外部链接[编辑]

      参见[编辑]

      package.lua第80行Lua错误:module 'Module:Navbar/configuration' not found package.lua第80行Lua错误:module 'Module:Navbar/configuration' not found