Linux 安装配置 Node.js 和 npm

# Node.js:一个让 JavaScript 在服务器端运行的运行时环境

  • 不是编程语言(使用 JavaScript)
  • 不是框架(但生态中有框架如 Express、NestJS)
  • 是基于 Chrome V8 引擎 的 JavaScript 运行平台

# npm:(Node Package Manager) Node.js 的默认包管理器,也是全球最大的开源软件注册表

  • 命令行工具:安装在电脑上的 npm 命令
  • 代码仓库:托管超过 300 万个 可复用代码包的仓库
  • 依赖管理系统:通过 package.json 管理项目依赖

传统限制:JavaScript 只能在浏览器中运行

Node.js 突破:让 JavaScript 可以:

✅ 访问文件系统

✅ 操作操作系统

✅ 处理网络请求

✅ 创建服务器应用

✅ 开发命令行工具

✅ 构建桌面应用(通过 Electron)

Node.js 的应用领域:

✅ 后端:API 服务器、微服务

✅ 前端:构建工具(Webpack、Vite)、开发服务器

✅ 桌面:Electron 应用(VS Code、Slack、Figma)

✅ 移动:React Native 的构建工具链

✅ CLI:命令行工具

✅ IoT:物联网设备控制

传统多线程模型:
┌─线程1─┐ ┌─线程2─┐ ┌─线程3─┐
│ 等待I/O │ │ 等待I/O │ │ 等待I/O │ ← 大量内存消耗
└──────┘ └──────┘ └─────┘

Node.js 事件驱动模型:
┌───事件循环───┐
│                              │
I/O 完成 → 回调函数
│                              │
└────────────┘ ← 单线程处理高并发

项目结构:
my-project/
├── package.json ← 项目配置清单(核心!)
├── package-lock.json ← 依赖树精确快照
├── node_modules/ ← 依赖包存放目录(通常很大)
└── src/

# Node.js 和 npm 下载链接:Node.js — Download Node.js®

官方推荐的安装方式有:nvm、fnm、docker(建议安装 LTS 版本)

image

nvm 和 fnm 区别如下:

image

image

速度测试示例:( fnm 通常会快一个数量级 )

# 测量 nvm 启动一个全新 Shell 并获取版本的时间

time (bash -c 'source ~/.nvm/nvm.sh && nvm --version')

# 测量 fnm 启动一个全新 Shell 并获取版本的时间

time (bash -c 'eval "$(fnm env)" && fnm --version')

命令兼容性:

# 以下命令在两者中通常表现一致:

nvm/fnm install 24  # 安装 Node.js 24

nvm/fnm use 24  # 切换到 Node.js 24

nvm/fnm ls  # 列出已安装版本

nvm/fnm ls-remote  # 列出远程可用版本

nvm/fnm current  # 显示当前使用版本

 

nvm 和 fnm 的选择:

image

nvm 和 fnm 可以在同一台机器上共存,并且它们可以互相切换使用。下面详细说明如何共存、切换、迁移

✅ 可以同时安装两个工具

✅ 可以互相切换使用

✅ Node.js 版本可以共享(可选配置)

✅ 不会相互冲突(如果正确配置)

# nvm 目录结构
~/.nvm/
├── versions/
│ └── node/  # Node.js 版本安装位置
│ ├── v20.11.0/
│ ├── v18.19.0/
│ └── ...
├── nvm.sh  # 初始化脚本
└── ...

# fnm 目录结构
~/.fnm/
├── node-versions/  # Node.js 版本安装位置(默认)
│ ├── v20.11.0/
│ ├── v18.19.0/
│ └── ...
└── aliases/

配置共享目录:

# 配置 fnm 使用 nvm 的安装目录(共享版本),反过来不推荐,因为 nvm 可能不兼容 fnm 的目录结构

export FNM_DIR="$HOME/.nvm" # 让 fnm 使用 nvm 的目录

nvm/fnm 切换:

# 1. 编辑配置文件

vim ~/.zshrc 或 vim ~/.bashrc (根据 shell 类型使用)

# 2. 注释掉不需要的工具

# 要使用 nvm,注释 fnm 行,取消注释 nvm 行

# 要使用 fnm,注释 nvm 行,取消注释 fnm 行

# 3. 重新加载配置

source ~/.zshrc 或 source ~/.bashrc

# 4. 验证当前使用的工具

which node  # 查看 node 路径

echo $PATH | grep -o ".nvm\|.fnm" | head -1  # 查看哪个工具在 PATH 中

nvm/fnm 迁移:

# 导出 nvm 当前版本的全局包

npm list -g --depth=0 > nvm_global_packages.txt

# 使用 fnm 切换到相同版本

fnm use <version>

# 根据导出的列表重新安装

cat nvm_global_packages.txt | grep -E "^[├└]" | awk '{print $2}' | cut -d@ -f1 | while read pkg

do
  if [ -n "$pkg" ] && [ "$pkg" != "(empty)" ]; then
    npm install -g "$pkg"
  fi
done

npm 常用命令:

# 1. 项目初始化

npm init  # 交互式创建

npm init -y  # 快速创建(全部默认)

# 2. 安装依赖(最重要的命令)

npm install 或简写为 npm i(根据 package.json 安装所有依赖)

npm install express  # 安装并添加到 dependencies

npm i -D typescript  # 安装并添加到 devDependencies

npm i -g nodemon  # 全局安装(CLI 工具)

# 3. 卸载依赖

npm uninstall package-name 或简写为 npm un package-name  # 卸载本地包

npm uninstall package-name --save-dev  # 卸载开发依赖

npm uninstall -g package-name  # 卸载全局包

# 4. 运行脚本

npm start  # 启动开发服务器

npm run dev  # 构建开发版本

npm test  # 运行测试

# 5. 依赖管理

npm update  # 更新所有包

npm outdated  # 检查过时包

npm audit  # 安全审计

npm audit fix  # 自动修复漏洞

# 6. 查看依赖和配置

npm list 或 npm ls  # 查看本地安装的包

npm list -g  # 查看全局安装的包

npm list -g --depth=0  # 只显示顶层包

npm list package-name  # 查看包的依赖树

npm view package-name 或 npm info package-name  # 查看包的详细信息

npm view package-name versions  # 查看包的所有版本

npm config list  # 查看所有配置

# 7. 发布你的包

npm publish

# 8. 其它常用设置

# 设置代理

npm config set proxy http://proxy.company.com:8080

npm config set https-proxy http://proxy.company.com:8080

# 查看当前源

npm config get registry

# 设置为淘宝镜像源(推荐国内使用)

npm config set registry https://registry.npmmirror.com/

# 恢复为官方源

npm config set registry https://registry.npmjs.org/

# 使用 nrm 管理多个源(推荐)

npm install -g nrm

nrm ls  # 列出所有源

nrm use taobao  # 使用淘宝源

nrm test  # 测试源的响应速度

# 设置全局安装路径(避免使用 sudo)

npm config set prefix ~/.npm-global

# 设置日志级别

npm config set loglevel info # info, warn, error, silent

# 设置超时时间,数字单位为毫秒

npm config set timeout 5000

# 保存时自动运行 audit

npm config set audit true

posted @ 2025-12-09 14:08  demoduan  阅读(96)  评论(0)    收藏  举报