Nest.js基础-2、Node.js的版本管理和包管理

搞js/ts开发,node是躲不开的,必须配置开发环境。所以这里快速过一下Node的基本使用。

一、简单过一下Node的概念

很多人误以为 Node.js 是新语言,其实它只是给 JavaScript 提供了脱离浏览器的运行环境,让 JS 能做后端开发、操作文件这些事。核心要点就三点:

1. Node到底是什么?

简单说,Node.js 是基于 Chrome V8 引擎的 JS 运行时环境。你可以这么理解:JS 本身是剧本,Node.js 就是能演剧本的舞台,而 V8 引擎是舞台上的核心演员,负责快速执行 JS 代码。另外,Node.js 还像个翻译官,把我们写的 JS 代码(普通话)翻译成 Windows、macOS 这些系统能懂的指令,这就是它跨平台的原因。

类比一下更好懂:Java 要靠 JVM 运行,PHP 要靠 Apache+解释器,Node.js 就是 JS 的"JVM",让它能脱离浏览器独立跑。

2. 官网与版本选择:避坑指南

官方地址是 nodejs.org,国内访问慢点但安全,所有安装包、文档都在这。版本分两种,选对不踩坑:

|------------------------|--------------------|---------------------|
| 版本类型 | 核心特点 | 使用建议 |
| LTS(长期支持版) | 稳定、bug 修复及时、API 稳定 | 优先选!项目开发、线上环境都用这个 |
| Latest Features(最新特性版) | 有最新功能、支持新 JS 特性 | 只用来尝鲜、测试新功能,别用在生产环境 |

3. 不推荐直接装官方包的原因

直接从官网装会有两个麻烦:一是版本切换不方便,比如老项目要 Node 16,新项目要 20,得反复卸载重装,还容易出冲突;二是下载慢,官网服务器在国外,国内网速经常只有几十 KB/s。后面讲的版本管理工具能解决这些问题。

4. 补充:版本号怎么看?

Node.js 用语义化版本,比如 v20.10.0,20 是主版本(大更新可能不兼容),10 是次版本(加新功能兼容旧版),0 是补丁版本(只修 bug)。LTS 是主版本稳定后的版本,比如 v18 LTS、v20 LTS。

二、版本管理工具:nvm 一键切换版本

nvm(Node Version Manager)就是专门管 Node 版本的工具,能在一台电脑上快速装、切换、卸载不同版本,解决多项目版本不兼容的问题。Windows 版叫 nvm-windows,和 Mac/Linux 用法差不多,重点说下安装和核心命令。

1. 分系统安装要点

(1)Mac 系统

没有官方安装包,用国内加速脚本装:复制 curl -o- https://gitee.com/mirrors/nvm/raw/master/install.sh | bash到终端运行。装完后要配置 .profile 文件(用户根目录),添加 nvm 路径和国内镜像,再运行 source ~/.profile 生效。运行 nvm -v 能看到版本号就是装成了。

(2)Windows 系统

去国内加速地址 https://www.nvmnode.com 下载 setup.zip,解压后安装。注意选有读写权限的目录(比如 C:\nvm),别选 C:\Program Files。装完后新建系统环境变量,变量名 nvm_node_js_org_mirror,值 https://npmmirror.com/mirrors/node/,重启终端后用 nvm -v 验证。

2. 核心使用命令(通用)

  1. 验证命令:运行 nvm,能看到所有可用命令就没问题;

  2. 装指定版本:nvm install 20.10.0(可省略 v),装完用 nvm use 20.10.0切换(Windows 要管理员终端),node -v 能看到版本号就是切换成了;

  3. 看版本列表:nvm list 看本地已装版本,Mac/Linux 用 nvm ls-remote 看官方所有版本,Windows 用 nvm list available

  4. 别名简化:nvm alias latest 20.10.0给版本起别名,nvm alias default 20.10.0 设置默认版本;

  5. 卸载版本:nvm uninstall 18.18.2,注意不能卸载当前在用的版本。

三、包管理工具:从 npm 到 pnpm 怎么选?

包管理工具负责装、更、卸项目依赖,从 npm 到 yarn 再到 pnpm,都是为了解决"慢、占空间、冲突"这些问题。核心结论先给:优先用 pnpm,国内用要切淘宝镜像。

1. 三款工具对比

(1)npm:基础款

Node 自带的,生态最基础,但缺点明显:装依赖是串行的,慢;会重复下载依赖,node_modules 很大。适合简单小项目或项目明确要求用 npm 的情况。

(2)yarn:优化款

为解决 npm 痛点来的,并行装依赖,快;扁平化管理依赖,减少重复;用 yarn.lock 锁版本。注意要单独配国内镜像,不然下载慢。适合项目明确要求用 yarn 的情况。

(3)pnpm:高效款(优先推荐)

最牛的是省空间:下载过的包会全局缓存,后续项目直接用链接指向缓存,不重复下;速度和 yarn 差不多,还原生支持 monorepo(一个仓库管多个子项目),命令和 npm/yarn 兼容,上手无压力。追求性能、省空间就选它。

2. 步骤

核心是切淘宝镜像,推荐用 nrm 管理,步骤很简单:

  1. 装 cnpm:npm install -g cnpm,淘宝官方的镜像工具,装东西比 npm 快;

  2. 装 nrm:cnpm install -g nrm,镜像切换器;

  3. 切淘宝源:nrm use taobao,用 npm config get registry 验证;发布包时切回官方源 nrm use npm

  4. 装 yarn 和 pnpm:cnpm install -g yarn pnpm,装完后 yarn 和 pnpm 要单独配淘宝镜像(yarn config set registry https://registry.npmmirror.compnpm config set registry https://registry.npmmirror.com)。

3. pnpm 核心用法(快速上手)

命令和 npm/yarn 差不多,记几个常用的:

  1. 初始化项目:pnpm init -y,和 npm/yarn 效果一样;

  2. 装依赖:pnpm add axios(生产依赖)、pnpm add eslint -D(开发依赖)、pnpm i(装所有依赖);

  3. 运行脚本:package.json 里配好脚本后,直接 pnpm devpnpm build,不用加 run;

  4. monorepo 管理:新建根项目,创建 pnpm-workspace.yaml 写 packages: ['packages/*'],再在 packages 文件夹下建子项目即可。根目录用 pnpm add lodash -w 装公共依赖,pnpm add vue --filter web 给指定子项目装依赖。

总结

Node.js 生态核心就是三件套:Node.js 本身让 JS 脱离浏览器运行,优先选 LTS 版;nvm 解决多版本切换问题,分系统装完配好镜像;包管理优先选 pnpm,国内用 nrm 切淘宝镜像,效率最高。跟着上面的步骤实操一遍,就能快速搭好稳定的 Node.js 开发环境了。

相关推荐
兮动人10 小时前
C语言之指针入门
c语言·开发语言·c语言之指针入门
ada7_10 小时前
LeetCode(python)78.子集
开发语言·数据结构·python·算法·leetcode·职场和发展
韩立学长11 小时前
【开题答辩实录分享】以《在线作业标准流程指导系统的设计与实现》为例进行选题答辩实录分享
java·javascript
nbsaas-boot11 小时前
Go 项目中如何正确升级第三方依赖(Go Modules 实战指南)
开发语言·后端·golang
百万蹄蹄向前冲11 小时前
2026云服务器从零 搭建与运维 指南
服务器·javascript·后端
wadesir12 小时前
C++基本数据类型详解(零基础掌握C++核心数据类型)
java·开发语言·c++
skywalk816312 小时前
wow文件处理trinitycore的文件处理
开发语言·游戏
一路往蓝-Anbo13 小时前
STM32单线串口通讯实战(五):RTOS架构 —— 线程安全与零拷贝设计
c语言·开发语言·stm32·单片机·嵌入式硬件·观察者模式·链表
leiming613 小时前
c++ map容器
开发语言·c++·算法
坚持就完事了13 小时前
JavaScript
开发语言·javascript·ecmascript