当前位置: 首页 > news >正文

1-2前端撸码前的准备,包管理工具和环境搭建

一、安装 Node.js 与 npm

  1. 官方安装(推荐初学者)

    • 访问 Node.js 官网 下载 LTS 版本(长期支持版),安装时默认包含 npm。
    • 验证安装
      node -v  # 检查 Node.js 版本
      npm -v   # 检查 npm 版本
      
  2. 版本管理工具(多项目需求)

    • nvm(跨平台):
      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
      nvm install 18.16.0  # 安装指定版本
      nvm use 18.16.0      # 切换版本
      
      • 支持项目级 .nvmrc 文件自动切换版本。
    • fnm(高性能):
      curl -fsSL https://fnm.vercel.app/install | bash
      fnm install 20.0.0
      
      适合需要快速启动的开发者。

二、项目初始化与依赖管理

  1. 创建项目

    mkdir my-project && cd my-project
    npm init -y  # 生成默认 package.json
    
  2. 安装依赖

    • 生产依赖
      npm install express --save
      
    • 开发依赖(如测试工具):
      npm install eslint prettier --save-dev
      
  3. 配置镜像加速(国内用户)

    • 临时使用淘宝源:
      npm install --registry=https://registry.npmmirror.com
      
    • 永久配置:
      npm config set registry https://registry.npmmirror.com
      

三、开发工具配置

  1. 代码编辑器推荐

    • VS Code:安装插件 ESLint、Prettier、Debugger for Chrome。
    • WebStorm:内置 Node.js 调试和代码分析功能。
  2. 环境变量管理

    • 使用 dotenv 加载 .env 文件:
      npm install dotenv
      
      require('dotenv').config();
      console.log(process.env.PORT);  // 读取端口配置
      
  3. Git 与忽略文件

    • 创建 .gitignore 排除 node_modules/.env

四、调试与优化

  1. 进程管理

    • PM2(生产环境):
      npm install pm2 -g
      pm2 start app.js  # 守护进程运行
      
      支持日志监控和负载均衡。
  2. 性能分析

    • 使用 node --inspect 启动调试模式,通过 Chrome DevTools 分析 CPU/内存。

五、部署准备

  1. 构建与打包

    • 通过 npm run build 生成静态文件(如 Webpack 项目)。
    • 使用 pkg 将 Node.js 应用编译为可执行文件:
      npm install pkg -g
      pkg app.js --targets node18-linux-x64
      
  2. 容器化部署

    • 编写 Dockerfile
      FROM node:18-alpine
      WORKDIR /app
      COPY package*.json ./
      RUN npm install
      COPY . .
      CMD ["node", "app.js"]
      

六、常见问题解决

  • 权限问题:避免全局安装时使用 sudo,可通过 npm config set prefix ~/.npm-global 修改路径。
  • 版本冲突:使用 nvmpnpm 隔离不同项目的 Node.js 版本。

以下是使用 nvmpnpm 隔离不同项目 Node.js 版本的详细指南,结合最新技术动态与最佳实践整理:

1. 安装与配置
  • 安装 nvm
    • Windows:下载 nvm-windows 并运行安装程序,设置 Node.js 符号链接路径(如 C:\nodejs)。
    • macOS/Linux:通过官方脚本安装:
      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
      
      需在 ~/.bashrc~/.zshrc 中加载环境变量。
  • 国内镜像加速
    修改 settings.txt(Windows)或 .bashrc(macOS/Linux),添加阿里云或腾讯云镜像源:
    node_mirror: https://npmmirror.com/mirrors/node/
    npm_mirror: https://npmmirror.com/mirrors/npm/
    
2. 版本隔离实践
  • 安装与切换版本
    nvm install 18.20.2    # 安装指定版本
    nvm use 18.20.2       # 切换版本(需管理员权限)
    
    通过 nvm ls 查看已安装版本。
  • 项目级版本控制
    在项目根目录创建 .nvmrc 文件,写入版本号(如 18.20.2),进入目录后执行 nvm use 自动切换。
3. 优势与局限
  • 优势
    • 完全隔离不同项目的 Node.js 环境,避免全局污染。
    • 支持快速回退旧版本(如 nvm install v12.22.1)。
  • 局限
    • Windows 需手动处理 .nvmrc 自动切换。
    • 需额外工具管理 npm 全局包(如 npm config set prefix)。

二、使用 pnpm 集成运行时管理

1. 运行时自动安装(v10.14+)
  • 配置:在 package.json 中声明所需运行时:
    {"devEngines": {"runtime": {"name": "node","version": "^24.1.0","onFail": "download"}}
    }
    
    pnpm 会自动下载并隔离指定版本的 Node.js/Bun/Deno,无需预装 nvm。
  • 特点
    • 多运行时支持(Node.js、Bun、Deno)。
    • 版本锁定至 pnpm-lock.yaml,确保一致性。
2. 与传统 nvm 的对比
维度nvmpnpm 运行时管理
安装方式需预装 nvm无需额外工具,声明即下载
多运行时仅支持 Node.js支持 Node.js、Bun、Deno
适用场景长期维护多版本环境快速适配临时项目需求

三、综合建议

  1. 复杂项目:优先使用 nvm,尤其需长期维护多版本或测试兼容性时。
  2. 轻量级项目:选择 pnpm 运行时管理,简化配置并支持多运行时。
  3. 混合方案
    • 用 nvm 管理基础 Node.js 版本,pnpm 处理项目级依赖隔离。
    • 通过 .nvmrcdevEngines 双重声明,增强团队协作一致性。
http://www.dtcms.com/a/341408.html

相关文章:

  • 升级Android系统webview
  • Spring事务源码
  • Linux Capability 解析
  • 【81页PPT】智慧方案智能化弱电智能家居系统解决方案(附下载方式)
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘requests-html’问题
  • VPS服务器安全审计方案:从风险评估到防护实施
  • 汇编语言学习3---GDB调试
  • 【StarRocks】TabletChecker逻辑
  • 尝试给每个客户端设置一个标签身份,以此来解决非独立同分布的情况?
  • BM25 vs TF-IDF:经典文本检索方法的对比
  • 门控循环单元(GRU, Gated Recurrent Unit)
  • 压缩--RAR、7-Zip工具使用
  • 【Python】新手入门:python面向对象编程的三大特性是什么?python继承、封装、多态的特性都有哪些?
  • Jmeter接口测试
  • 30. 技术专题-锁
  • K8S-Configmap资源
  • 双模式 RTMP H.265 播放器解析:从国内扩展到 Enhanced RTMP 标准的演进
  • 媒体发稿平台哪家好?媒体新闻发稿渠道有哪些值得推荐?
  • 【知识杂记】陀螺仪直接积分就能获得角度吗?
  • 【C++】C++的类型转换
  • 《P1967 [NOIP 2013 提高组] 货车运输》
  • 多线程 + 事务传播误用导致的问题
  • 【北京迅为】iTOP-4412精英版使用手册-第三十二章 网络通信-TCP套字节
  • 如何排查服务器DNS解析失败的问题
  • TypeScript中的枚举
  • UE5分享序列播放器的停止与设置播放范围
  • 8.20作业
  • [Mysql数据库] 用户管理选择题
  • IIS访问报错:HTTP 错误 500.19 - Internal Server Error
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(一)基本代码