NPM 介绍

1.NPM 是什么?

  • NPM(Node Package Manager)是随 Node.js 一起安装的官方包管理工具

  • 它主要功能包括:

    • 安装/卸载第三方包(npm install
    • 管理项目依赖(记录在 package.json 中)
    • 运行脚本(如 npm run build)
  • 通过输入 "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功:

$ npm -v
6.12.1

2.依赖管理 & package.json

  • 代码不用传代码库,只要项目配置文件记录好了就够了
    • 实际上,node_modules 目录通常被 .gitignore 忽略。
    • 其他开发者或 CI/CD 系统通过 npm install 根据 package.json(以及 package-lock.json)自动还原依赖

3.生产依赖 vs 开发依赖

  • 生产依赖(--save 或 -S,现在默认就是生产依赖):
    • 运行时必需的包(比如 express, lodash)
    • 记录在 package.json 的 dependencies 字段
  • 开发依赖(--save-dev 或 -D):
    • 仅开发/构建时需要(比如 webpack, eslint, jest)
    • 记录在 devDependencies

💡 注意:从 npm 5 开始,npm install 默认会自动加到 dependencies,不需要手动加 -S;而 -D 仍需显式指定

4.国内源的问题 & 解决方案

  • npm 默认源在国外(registry.npmjs.org),国内访问慢
  • 常见解决方案1:切换 registry 源:如淘宝 NPM 镜像
    npm config set registry https://registry.npmmirror.com
    
  • 常见解决方案2:使用 cnpm:由淘宝团队开发的 npm 客户端,底层也是切换源 + 一些优化
    npm install -g cnpm --registry=https://registry.npmmirror.com
    

5.pnpm 的定位

  • pnpm 并不是为了解决“源”的问题,而是解决 磁盘空间浪费 和 依赖结构不一致 的问题
  • 它的核心机制是:
    • 所有包都存在一个全局 store(硬链接 + 符号链接)
    • 不同项目共享同一份包文件,避免重复下载和存储
    • 使用严格的 node_modules 结构(非扁平化),避免“幽灵依赖”(phantom dependencies)

pnpm 解决的是本地重复下载的问题

6.NPM 常用命令

npm -v 查看 NPM 版本
npm version 查看 Node.js 和所有内置模块的版本信息
npm search <包名> 搜索 npm 仓库中的包(支持模糊匹配)
npm init 初始化项目,生成 package.json 文件(可加 -y 跳过交互)
npm install <包名> 或 npm i <包名> 安装指定包到本地 node_modules
npm install <包名>@<版本号> 安装指定版本的包
npm update <包名> 更新已安装的包
npm remove <包名> 或 npm r <包名> 删除已安装的包
npm install <包名> --save(或 -S) 安装并添加到 dependencies(生产依赖)
npm install <包名> --save-dev(或 -D) 安装并添加到 devDependencies(开发依赖)
npm install 根据 package.json 自动安装所有依赖(等价于 npm i)
npm list -g --depth 0 查看全局安装的顶层包(不显示依赖树)

💡 提示:从 npm 5 开始,npm install <包名> 默认会自动保存到 dependencies,无需手动加 --save

7.全局安装 vs 本地安装

NPM 支持两种安装方式:本地安装(local) 和 全局安装(global),区别在于是否添加 -g 参数:

npm install express     # 本地安装
npm install express -g  # 全局安装

(1) 本地安装(默认)

  • 包会被安装到当前目录下的 ./node_modules 中(若目录不存在则自动创建)。
  • 只能在当前项目中通过 require('包名') 引入使用。
  • 所有项目依赖应优先使用本地安装,确保版本隔离和可复现性

(2) 全局安装

  • 包会被安装到全局目录(如 /usr/local/lib/node_modules 或 Node 安装目录下)。
  • 同时会将可执行命令(如 vue, create-react-app, nodemon)链接到系统 PATH。
  • 作用:让你在任意目录的终端中都能直接运行该命令。
  • 注意:全局包不能通过 require() 在代码中引入,仅用于命令行工具。

✅ 建议:
项目依赖(如 express, lodash)→ 本地安装
CLI 工具(如 typescript, pnpm, http-server)→ 全局安装

posted @ 2019-11-30 16:50  ---空白---  阅读(312)  评论(0)    收藏  举报