六维教程

NPM 核心概念

理解 NPM 的工作方式,先记住三个最核心的名词:包、依赖、注册表,它们构成了 NPM 世界的骨架。

包(Package)

一个包就是一组可复用的 JavaScript 代码,通常包含:

  • 源代码文件
  • 一个 package.json 配置文件
  • 必要的说明文档

包可以是公共的(发布到 npm registry 供所有人使用),也可以是私有的(仅在团队内部使用)。你每天 npm install 装的就是一个个包。

依赖(Dependency)

你的项目用到了某个包,这个包就成了项目的依赖。依赖分两种:

  • 生产依赖(dependencies:项目运行时必须的,比如 React、Vue、lodash。
  • 开发依赖(devDependencies:仅在开发阶段需要,比如测试工具、打包工具、代码格式化工具。
{
  "dependencies": {
    "lodash": "^4.17.21"
  },
  "devDependencies": {
    "vitest": "^2.0.0"
  }
}

区分两者的意义在于,部署到生产环境时可以选择只安装生产依赖,从而减小体积、提升安装速度。

注册表(Registry)

npm registry 是一个公共的包数据库,存放着所有发布到 NPM 的包,默认地址是 https://registry.npmjs.org/

你可以把它理解成 JavaScript 世界的「应用商店」——只不过这里上架的是代码包,而不是 App。当你执行 npm install lodash 时,NPM 就是去这个仓库里把 lodash 下载到本地。

NPM 的核心能力

把上面三个概念串起来,NPM 能做的事可以总结为四点:

  • 依赖管理:自动下载、记录、更新依赖,并维护一棵依赖树,解决「A 依赖 B,B 依赖 C」的连锁关系。
  • 脚本运行:通过 npm run 执行 package.json 里定义的脚本,统一项目的启动、构建、测试命令。
  • 版本解析:遵循语义化版本(SemVer),用 ^~ 等符号智能判断该装哪个版本,兼顾更新与稳定。
  • 与 Node.js 深度集成:作为 Node.js 的默认包管理器,随 Node 一起安装,开箱即用。

理解了这些,后面关于 package.json、安装命令、依赖解析的篇章就都有了基础。

上一篇
NPM 教程
下一篇
NPM package.json