程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • node.js

    • Node.js 初识
    • 包与 npm 包管理器
      • 1. package 包
        • 1.1 包结构
        • 1.2 包描述文件
      • 2. NPM(Node Package Manager)
        • 2.1 NPM 是什么
        • 2.2 NPM 能干什么
        • 2.3 NPM 常用命令
        • 1. 搜索包
        • 2. 安装包
        • 2.1 局部安装
        • 2.2 开发依赖安装
        • 2.3 全局安装
        • 2.4 安装指定版本
        • 2.5 批量安装
        • 3. 移除包
        • 4. 其他命令
        • 5. 关于版本号的说明
      • 3. cnpm 的简介与使用
        • 3.1 国内使用 npm 存在的问题
        • 3.2 使用淘宝的 cnpm 代替 npm
      • 4. Yarn 的简介与使用
        • 4.1 Yarn 是什么
        • 4.2 安装 Yarn
        • 4.3 配置环境变量
        • 4.4 Yarn 命令与 npm 命令的对应关系
        • 4.5 Yarn 的优点
      • 5. pnpm 的简介与使用
        • 5.1 pnpm 是什么
        • 5.2 安装 pnpm
        • 5.3 pnpm 的工作原理
        • 5.4 pnpm 命令与 npm 命令的对应关系
        • 5.5 pnpm 的优点
        • 5.6 配置全局缓存路径
      • 6. NVM 的简介和使用
        • 6.1 安装与配置 NVM for Windows
        • 6.2 安装和切换 Node.js 版本
        • 6.3 如何验证和使用
    • Buffer 缓冲器
    • fs 文件系统
    • MongoDB 非关系型数据库
  • node.js
  • node.js
scholar
2024-08-02
目录

包与 npm 包管理器

# 包与 npm 包管理器

在 Node.js 中,包(package)是一个组织模块的标准方式,通常用于分发和共享代码。包管理是 Node.js 生态系统的重要组成部分,允许开发者轻松管理项目中的依赖关系和版本。

# 1. package 包

Node.js 的包遵循 CommonJS 规范,将一组相关的模块组合在一起,形成一个完整的工具集。包由两个主要部分组成:包结构和包描述文件。

  • 包结构:用于组织包中的各种文件和资源。
  • 包描述文件:描述包的相关信息,以供外部读取和分析。

# 1.1 包结构

一个 Node.js 包通常是一个压缩文件,解压后形成一个目录结构。符合 CommonJS 规范的目录通常包含以下文件和目录:

  • package.json:包描述文件,包含包的元数据信息(必需)。
  • bin:可执行二进制文件目录(可选)。
  • lib:存放 JavaScript 代码的目录(可选)。
  • doc:文档目录,包括说明文档、变更日志等(可选)。
  • test:单元测试目录,包含测试代码(可选)。

[!TIP] 虽然这些目录结构是规范推荐的,但在实际开发中,只有 package.json 是必需的。

如何将文件夹变成一个包?

要将一个普通文件夹转换为 Node.js 包,需要在文件夹中创建一个合法的 package.json 文件。可以通过 npm 命令行工具来生成这个文件:

npm init
1
  • npm init 命令会启动一个交互式命令行,指导你创建 package.json 文件,并填写必要的信息。

包名要求

  • 包名不能包含中文字符。
  • 包名不能包含大写字母。
  • 包名尽量不要以数字开头。
  • 包名不能与 npm 仓库上其他包同名。

# 1.2 包描述文件

package.json 是一个 JSON 格式的文件,用于描述包的元数据和依赖关系。它包含多个字段来表达包的详细信息:

字段名 说明
name 包的名称,必须唯一,不能包含大写字母或特殊字符。
version 包的版本号,遵循语义化版本规范(semver),格式为 MAJOR.MINOR.PATCH。
description 对包的简短描述,帮助用户了解包的功能。
keywords 关键字数组,用于描述包的相关内容,便于在 npm 中搜索。
author 包的作者信息,通常包含姓名和电子邮件。
contributors 包的贡献者列表,包含对项目有贡献的人员信息。
maintainers 包的维护者信息,通常是负责维护包更新和管理的人。
license 包的许可证信息,决定其他人如何使用和分发你的代码。
repository 代码仓库地址,通常包含版本控制系统类型和 URL。
bugs 提交 bug 的地址,通常为问题跟踪系统的 URL。
homepage 包的主页 URL,通常是项目的官方网站或 GitHub 页面。
dependencies 包的运行时依赖,列出所有必要的依赖包及其版本。
devDependencies 包的开发时依赖,列出开发阶段需要的依赖包及其版本。
scripts 定义可通过 npm 运行的脚本命令,例如测试、构建等。
bin 定义包的可执行命令,便于在命令行使用。
main 包的入口文件,当通过 require 加载包时,首先加载此文件。
directories 定义包的目录结构,提供文档、测试等文件夹的指引。
engines 指定包运行所需的 Node.js 版本,确保兼容性。
os 指定支持的操作系统,限制包的安装环境。
cpu 指定支持的 CPU 架构,限制包的运行环境。

package.json 文件示例

{
  "name": "my-awesome-package", // 包名,必须是唯一的,不能包含大写字母或特殊字符
  "version": "1.0.0",           // 当前版本号,遵循语义化版本规范 (semver)
  "description": "A simple Node.js package example", // 对包的简短描述
  "main": "index.js",           // 包的入口文件,require 时会加载这个文件
  "scripts": {                  // 定义可通过 npm 运行的脚本命令
    "test": "echo \"Error: no test specified\" && exit 1" // 测试脚本,默认显示错误信息
  },
  "repository": {               // 存储库信息
    "type": "git",              // 版本控制系统类型
    "url": "git+https://github.com/username/my-awesome-package.git" // 代码仓库地址
  },
  "keywords": [                 // 关键词数组,有助于搜索和发现包
    "nodejs",                   // 关键词1
    "package",                  // 关键词2
    "example"                   // 关键词3
  ],
  "author": "John Doe <johndoe@example.com>", // 包的作者,包含姓名和电子邮件
  "license": "MIT",             // 使用的许可证类型
  "bugs": {                     // Bug 跟踪信息
    "url": "https://github.com/username/my-awesome-package/issues" // 提交 Bug 的 URL
  },
  "homepage": "https://github.com/username/my-awesome-package#readme", // 包的主页地址
  "dependencies": {             // 运行时依赖的包及其版本
    "express": "^4.17.1"        // 依赖 express 包,版本为 4.17.1 或更高
  },
  "devDependencies": {          // 开发时依赖的包及其版本(不会在生产环境中安装)
    "jest": "^26.6.0"           // 依赖 jest 包,版本为 26.6.0 或更高
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  • name 和 version:定义包的名称和版本,这是必需字段。
  • main:指定包的入口文件,当包被 require 时,会加载此文件。
  • scripts:可以定义多个 npm 命令行脚本,例如 npm run test。
  • dependencies:列出所有包的运行时依赖,使用 npm install 安装。
  • devDependencies:列出开发时需要的依赖,不包含在生产环境中。

# 2. NPM(Node Package Manager)

NPM 是 Node.js 的包管理器,提供了一个方便的途径来管理 Node.js 项目所需的依赖包。通过 NPM,开发者可以轻松地搜索、安装、更新和删除 Node.js 的第三方包。

# 2.1 NPM 是什么

  • 全称:Node Package Manager。
  • 关系:NPM 是 Node.js 的官方包管理器,随 Node.js 一起安装。安装 Node.js 时,NPM 会被自动安装。

# 2.2 NPM 能干什么

NPM 提供了对 Node.js 包的全面管理功能,包括:

  • 搜索:在 NPM 仓库中查找第三方包。
  • 安装:下载并安装所需的包。
  • 更新:升级已安装的包到最新版本。
  • 删除:移除不再需要的包。
  • 发布:将自定义包上传到 NPM 仓库。

# 2.3 NPM 常用命令

# 1. 搜索包

npm search <package-name>
1
  • 作用:在 NPM 仓库中搜索指定名称的包。
  • 例子:npm search express 会列出所有与 express 相关的包。
  • 网站搜索:直接在 NPM 官方网站进行搜索:https://www.npmjs.com (opens new window)

# 2. 安装包

# 2.1 局部安装
npm install <package-name> --save # 简写:npm i <package-name> -S 或 npm i <package-name>
1
  • 作用:安装包到项目的 node_modules 目录中,并将其添加到 package.json 的 dependencies。
  • 备注:
    1. 局部安装的包只在项目目录下可用。
    2. 安装后会生成 package-lock.json,用于锁定当前安装的包版本,以确保下次安装的一致性。
    3. NPM 版本在 5.x 及以后无需 --save,会自动写入 dependencies。
# 2.2 开发依赖安装
npm install <package-name> --save-dev # 简写:npm i <package-name> -D
1
  • 作用:将包安装为开发依赖,意味着该包只在开发环境中使用,不会被打包到生产环境中。
  • 适用场景:开发依赖通常用于工具和库,比如代码打包工具(如 Webpack、Rollup)、测试框架(如 Mocha、Jest)、语法检查工具(如 ESLint)、CSS 预处理器(如 Sass、Less)等。

开发依赖与生产依赖的区别

  1. 开发依赖(devDependencies)
    • 用途:仅在开发过程中需要,不会在生产环境中使用。
    • 示例:语法检查、代码压缩、测试框架。
    • 安装命令:npm install <package-name> --save-dev
  2. 生产依赖(dependencies)
    • 用途:项目在生产环境中运行所需的依赖。
    • 示例:用于页面展示或功能实现的库,如 jQuery、React、Vue.js。
    • 安装命令:npm install <package-name> --save
  3. 重叠依赖:
    • 有些包在开发和生产环境中都需要,比如某些基础库(如 jQuery),可以根据项目需求选择安装为 dependencies 或同时安装为 devDependencies。
# 2.3 全局安装
npm install <package-name> -g
1
  • 作用:将包安装为全局可用,一般用于命令行工具。
  • 查看全局包的安装位置:npm root -g
  • image-20240802065146316
# 2.4 安装指定版本
npm install <package-name>@<version>
1
  • 作用:安装指定版本的包。
# 2.5 批量安装
npm install
1
  • 作用:根据 package.json 文件中声明的依赖,批量安装所有所需的包。

# 3. 移除包

npm remove <package-name> # 或者使用 npm uninstall <package-name>
1
  • 作用:从项目的 node_modules 中移除包,并从 package.json 中删除其声明。

注意

  • 如果在项目中安装了多个版本的同一包,npm remove 只会移除你当前项目中使用的版本。
  • 移除包不会影响全局安装的包。要移除全局包,使用 npm remove -g <package-name>。

# 4. 其他命令

  • 检测修复:npm audit fix

    • 作用:检测项目依赖中的安全问题,并尝试修复。
  • 查看版本信息:

    • npm view <package-name> versions:查看远程 NPM 仓库中包的所有版本。
    • npm view <package-name> version:查看 NPM 仓库中包的最新版本。
    • npm ls <package-name>:查看本地安装的包的版本。

# 5. 关于版本号的说明

NPM 使用 语义化版本控制 (opens new window)(Semantic Versioning)来管理包的版本号:

  • "^3.x.x":锁定大版本,安装时保证包是 3.x.x 版本,x 默认取最新的。
  • "~3.1.x":锁定小版本,安装时保证包是 3.1.x 版本,x 默认取最新的。
  • "3.1.1":锁定完整版本,安装时包必须是 3.1.1 版本。

# 3. cnpm 的简介与使用

# 3.1 国内使用 npm 存在的问题

  • 访问延迟:由于 npm 的官方仓库服务器位于国外,从国内访问时可能会遇到网络延迟,导致包安装速度较慢。

  • 连接不稳定:在某些网络环境下,访问 npm 官方仓库可能会出现连接超时或无法访问的情况。

  • 查看当前 npm 仓库地址:可以使用以下命令查看当前配置的 npm 仓库地址:

    npm config get registry
    
    1

    Alt text

  • 解决方案:为了解决这些问题,国内用户可以使用淘宝提供的镜像服务。

# 3.2 使用淘宝的 cnpm 代替 npm

淘宝为国内用户搭建了一个 npm 镜像服务器,该服务器每隔 10 分钟同步一次官方 npm 仓库的内容。使用淘宝镜像可以显著提高包的下载速度和稳定性。

第一种(不建议):安装 cnpm

  • 安装 cnpm:可以通过 npm 安装 cnpm,这是淘宝提供的一个命令行工具,使用它可以方便地从淘宝镜像下载 npm 包。

    npm install -g cnpm --registry=https://registry.npmmirror.com/
    
    1
  • 使用 cnpm:安装 cnpm 后,可以用 cnpm 命令代替 npm 进行包的安装。

    cnpm install <package-name>
    
    1
  • 注意:虽然 cnpm 提供了类似 npm 的命令行接口,但一些 npm 的高级特性可能不支持或行为略有不同。

第二种(建议):替换 npm 的仓库地址

  • 替换仓库地址:将 npm 的默认仓库地址替换为淘宝的镜像地址,这样依然可以使用 npm 命令,但实际上是从淘宝镜像下载的。

    npm config set registry https://registry.npmmirror.com/
    
    1
  • 验证更改:可以通过以下命令验证仓库地址是否更改成功:

    npm config get registry
    
    1

    如果输出的是淘宝镜像地址,则表示更改成功。

  • 使用 npm:替换仓库地址后,可以继续使用标准的 npm 命令来管理项目的依赖。

    npm install <package-name>
    
    1

    由于仓库地址已经更改为国内镜像,安装速度将大幅提升。

总结

  • cnpm 安装:适合那些需要频繁使用 npm 进行包管理且对安装速度有较高要求的用户,但不推荐作为唯一工具。
  • 替换仓库地址:推荐所有国内用户使用这种方式,无需安装额外工具,保持 npm 的标准用法,同时提高下载速度和稳定性。

# 4. Yarn 的简介与使用

# 4.1 Yarn 是什么

Yarn 是一个由 Facebook、Google、Exponent 和 Tilde 联合推出的 JavaScript 包管理工具。Yarn 于 2016 年 10 月发布,自发布以来迅速获得了开发者的关注和使用。

  • GitHub 星数:截至 2019 年 1 月,Yarn 在 GitHub 上的 Star 数量已超过 34.3k。
  • 高效性:Yarn 使用本地缓存机制,可以在没有网络连接的情况下安装本地已缓存的依赖项,安装速度更快。
  • 一致性:Yarn 在不同环境中安装相同的依赖时,保证版本一致性。

# 4.2 安装 Yarn

可以通过 npm 来安装 Yarn:

npm install -g yarn
1

# 4.3 配置环境变量

由于 Yarn 的全局安装位置与 npm 不同,因此需要将 Yarn 的全局安装路径配置到系统的环境变量中,以确保全局安装的包能够正常使用。

具体操作步骤

  1. 获取 Yarn 的全局安装目录:执行以下命令获取 Yarn 的全局安装目录:

    yarn global dir
    
    1
  2. 获取 Yarn 的全局可执行文件目录:执行以下命令获取 Yarn 的全局可执行文件目录:

    yarn global bin
    
    1
  3. 配置环境变量:将上述两步返回的路径添加到系统的环境变量中。

    • Windows:在系统属性 -> 环境变量 -> 系统变量中,找到 Path 变量,点击“编辑”并添加 Yarn 的路径。

    • macOS/Linux:在终端中编辑 ~/.bashrc 或 ~/.zshrc 文件,添加以下内容:

      export PATH="$PATH:`yarn global bin`"
      
      1

# 4.4 Yarn 命令与 npm 命令的对应关系

Yarn 提供了与 npm 类似的命令行接口,以下是常用命令的对比:

操作 Yarn 命令 npm 命令
初始化项目 yarn init -y npm init -y
安装所有依赖 yarn npm install
安装指定版本的运行时依赖包 yarn add <package>@<version> npm install <package>@<version> -S
安装指定版本的开发时依赖包 yarn add <package>@<version> -D npm install <package>@<version> -D
全局安装指定包 yarn global add <package> npm install <package> -g
移除依赖包 yarn remove <package> npm remove <package>
移除全局依赖包 yarn global remove <package> npm remove <package> -g
查看某个包的信息 yarn info <package> npm info <package>
设置淘宝镜像 yarn config set registry https://registry.npmmirror.com npm config set registry https://registry.npmmirror.com

# 4.5 Yarn 的优点

  • 速度快:由于 Yarn 使用本地缓存机制,安装相同的包时速度更快。
  • 离线模式:已安装过的包可以在离线模式下再次安装。
  • 版本锁定:Yarn 生成的 yarn.lock 文件确保项目在不同环境中安装相同的依赖版本。
  • 更好的依赖管理:Yarn 提供了更好的依赖冲突解决机制和更清晰的输出信息。

总结

Yarn 是一个强大的包管理工具,提供了比 npm 更好的性能和一致性。在使用 Yarn 时,可以享受到更快的安装速度、更好的依赖管理和更一致的安装结果。通过将 Yarn 的全局安装路径添加到环境变量中,可以确保全局安装的包能够正常使用。

# 5. pnpm 的简介与使用

# 5.1 pnpm 是什么

pnpm 是一种高效、快速且节省磁盘空间的包管理工具。与 npm 和 Yarn 不同的是,pnpm 通过使用硬链接和符号链接的方式来管理包,避免了重复的依赖包下载,从而显著减少了磁盘空间的占用。

  • 高效性:pnpm 通过共享依赖的方式,提高了安装速度并节省了磁盘空间。
  • 一致性:pnpm 确保在不同的环境中安装的依赖版本一致。
  • 隔离性:pnpm 使用符号链接和硬链接来管理包,避免了不同项目之间的依赖冲突。

# 5.2 安装 pnpm

可以通过 npm 来安装 pnpm:

npm install -g pnpm
1

# 5.3 pnpm 的工作原理

pnpm 通过创建硬链接和符号链接的方式来管理包。硬链接是文件系统中指向相同物理文件的不同文件名,因此在不同项目中,依赖的包只会被下载一次并存储在一个共享的存储中,从而节省了磁盘空间。

  • 符号链接(symlink):在项目的 node_modules 中,创建指向全局存储中包的符号链接。
  • 硬链接(hard link):在全局存储中,同一个包只存储一次,通过硬链接进行共享。

# 5.4 pnpm 命令与 npm 命令的对应关系

pnpm 提供了与 npm 和 Yarn 类似的命令行接口,以下是常用命令的对比:

操作 pnpm 命令 npm 命令
初始化项目 pnpm init npm init
安装所有依赖 pnpm install npm install
安装指定版本的运行时依赖包 pnpm add <package>@<version> npm install <package>@<version> -S
安装指定版本的开发时依赖包 pnpm add <package>@<version> -D npm install <package>@<version> -D
全局安装指定包 pnpm add -g <package> npm install <package> -g
移除依赖包 pnpm remove <package> npm remove <package>
移除全局依赖包 pnpm remove -g <package> npm remove <package> -g
查看某个包的信息 pnpm info <package> npm info <package>
设置淘宝镜像 pnpm config set registry https://registry.npmmirror.com npm config set registry https://registry.npmmirror.com

# 5.5 pnpm 的优点

  • 节省磁盘空间:pnpm 通过硬链接和符号链接的方式,避免了重复下载相同的依赖包,从而显著减少了磁盘空间的占用。
  • 安装速度快:由于依赖共享,pnpm 的安装速度通常比 npm 和 Yarn 更快。
  • 隔离性好:pnpm 使用符号链接和硬链接来管理包,避免了不同项目之间的依赖冲突。
  • 严格的版本控制:pnpm 确保在不同环境中安装相同的依赖版本,确保项目的一致性。

# 5.6 配置全局缓存路径

pnpm 在全局使用缓存路径来存储依赖包,因此可以通过以下命令配置缓存路径:

pnpm config set store-dir <path>
1
  • pnpm 将缓存存储在一个共享的全局目录中,通常位于用户的主目录下(C:\Users\<YourUser>\.pnpm-store)。
  • 在某些情况下(如磁盘空间限制或需要特定的缓存管理策略时),可以通过设置自定义路径来满足项目需求。

总结

pnpm 是一种高效且节省磁盘空间的包管理工具,通过硬链接和符号链接的方式来管理包,避免了重复的依赖包下载。pnpm 提供了与 npm 和 Yarn 类似的命令行接口,使用起来非常方便。在使用 pnpm 时,可以通过配置全局缓存路径来优化包的管理和安装速度。

# 6. NVM 的简介和使用

nvm(Node Version Manager)是一个用于管理 Node.js 版本的工具,可以方便地在多个 Node.js 版本之间切换。在 Windows 系统上,nvm-windows 是其对应的版本,允许你安装、卸载和管理不同版本的 Node.js。

# 6.1 安装与配置 NVM for Windows

  1. 卸载现有的 Node.js

    在安装 nvm 之前,需要卸载当前已安装的 Node.js,因为 nvm 会管理 Node.js 的安装路径和版本。

  2. 下载 nvm-windows

    从 GitHub 仓库下载 nvm-windows 安装包:

    • nvm-windows GitHub Releases (opens new window)
    • image-20240802074838843
  3. 安装 nvm

    • 运行下载的安装包。
    • 在安装过程中,会提示选择 nvm 和 node.js 的安装目录,请确保目录路径中不包含空格。
    • 选用【以管理员身份运行】cmd 程序来执行 nvm 命令
  4. 设置镜像地址(可选)

    为了加快下载速度,特别是在中国大陆地区,建议配置国内的镜像地址:

    nvm node_mirror https://npmmirror.com/mirrors/node/
    nvm npm_mirror https://npmmirror.com/mirrors/npm/
    
    1
    2

    说明:这些设置用于通过 nvm 下载 Node.js 和 npm 时使用镜像加速。

笔记

  • 安装成功会自动将 NVM 的路径添加到系统环境变量中,因此你可以在命令提示符中直接使用 nvm 命令。
  • nvm-windows 会在安装和切换 Node.js 版本时自动管理 node 和 npm 的路径,确保系统能够正确使用当前版本。

验证安装

  1. 打开命令提示符(CMD),输入以下命令查看 nvm 版本,确认安装成功:

    nvm version  # 显示 nvm 的版本号
    
    1
  2. 查看当前环境的 Node.js 版本(如果已经安装过):

    node -v  # 显示当前正在使用的 Node.js 版本
    
    1

# 6.2 安装和切换 Node.js 版本

  1. 查看可用的 Node.js 版本:

    nvm list available  # 列出所有可用的 Node.js 版本
    
    1
    • nvm list available出现空白解决办法(传送门 (opens new window))
  2. 安装特定版本的 Node.js:

    nvm install 14.17.0  # 安装 Node.js 版本 14.17.0
    
    1
  3. 切换 Node.js 版本:

    nvm use 14.17.0  # 切换到 Node.js 版本 14.17.0
    
    1
  4. 查看已安装的 Node.js 版本:

    nvm list  # 列出所有已安装的 Node.js 版本
    
    1

# 6.3 如何验证和使用

  • 每次切换 Node.js 版本后,可以使用以下命令验证当前使用的 Node.js 版本:

    node -v  # 显示当前正在使用的 Node.js 版本
    
    1
  • 使用 nvm-windows 切换版本时,它会自动调整 PATH 环境变量,以确保 node 和 npm 指向正确的安装路径。

注意事项

  • 全局包的管理:切换 Node.js 版本后,所有全局安装的 npm 包也会发生变化,因为每个版本的 Node.js 都有自己的全局包存储。
  • 环境变量:nvm-windows 自动管理 node 和 npm 的路径,因此无需手动调整系统环境变量。

nvm-windows 提供了便捷的 Node.js 版本管理功能,使得在多个项目之间切换版本变得简单高效。通过 nvm-windows 的自动路径管理,您可以避免手动配置环境变量的麻烦,并确保不同项目能够使用适合的 Node.js 版本。

编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
Node.js 初识
Buffer 缓冲器

← Node.js 初识 Buffer 缓冲器→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式