温馨提示×

Ubuntu Nodejs如何进行项目管理

小樊
38
2025-12-10 05:20:46
栏目: 编程语言

Ubuntu 下 Node.js 项目管理全流程

一 环境与版本管理

  • 使用 NVM 管理多个 Node.js 版本,便于在不同项目间切换与回滚:
    • 安装 NVM:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
    • 重新加载:source ~/.bashrc
    • 安装与切换版本:nvm install --ltsnvm use 18nvm alias default 18
  • 生产环境优先选择 LTS 版本,稳定性与安全性更好。
  • 若不使用 NVM,也可通过 APTNodeSource 安装,但多版本切换与隔离不如 NVM 灵活。

二 项目初始化与依赖管理

  • 初始化与脚本约定:
    • npm init -y 创建 package.json
    • 在 package.json 中约定常用脚本:
      • "start": "node src/app.js"
      • "dev": "nodemon src/app.js"
      • "test": "jest"
  • 依赖管理三种主流工具(择一为主,团队内保持一致):
    • npmnpm i pkgnpm i -D pkgnpm upnpm rm pkg
    • Yarnnpm i -g yarnyarn add pkgyarn add -D pkgyarn upyarn remove pkg
    • pnpmnpm i -g pnpmpnpm add pkgpnpm add -D pkgpnpm uppnpm rm pkg
  • 建议将 node_modules/.env 加入 .gitignore,使用 npm ciyarn install --frozen-lockfile 在 CI/CD 中可重复安装。

三 目录结构与代码组织

  • 推荐分层与模块化,提升可读性与可维护性(可按需裁剪):
    • 示例结构:
      project-root/
      ├─ src/
      │  ├─ api/            # 路由与控制器
      │  ├─ config/         # 配置与环境变量
      │  ├─ models/         # 数据模型
      │  ├─ services/       # 业务逻辑
      │  ├─ loaders/        # 启动流程拆分
      │  └─ app.js          # 入口
      ├─ test/              # 测试
      ├─ .env               # 环境变量
      ├─ .gitignore
      ├─ package.json
      └─ README.md
      
  • 配置集中管理、路由与业务分离、启动时按 loader 初始化,有助于大型项目的可测试与可维护。

四 本地开发工作流与前后端分离

  • 本地开发:
    • 使用 nodemon 监听变更:npm i -D nodemonnpm run dev
    • 使用 dotenv 管理环境:npm i dotenv,在入口处 require('dotenv').config()
  • 前后端分离示例:
    • 目录:my-project/{frontend,backend}/
    • 后端(示例端口 3001):npm i express cors,启用 CORS 处理跨域
    • 前端(示例端口 3000):使用 Create React AppVue CLI 启动开发服务器
    • 开发期通过前端开发服务器代理 API 请求到后端,避免 CORS 问题;生产期由 Nginx 或网关统一代理。

五 进程守护 部署与协作

  • 进程守护与自启动:
    • 使用 PM2npm i -g pm2
      • 启动:pm2 start src/app.js --name my-api
      • 常用:pm2 statuspm2 logspm2 monit
      • 开机自启:pm2 startuppm2 save
  • 系统服务方式(不使用 PM2 时):
    • 创建服务:sudo nano /etc/systemd/system/node.service
      [Unit]
      Description=My Node.js App
      After=network.target
      
      [Service]
      WorkingDirectory=/home/ubuntu/my-project
      ExecStart=/usr/bin/node /home/ubuntu/my-project/src/app.js
      Restart=always
      User=ubuntu
      Environment=NODE_ENV=production
      
      [Install]
      WantedBy=multi-user.target
      
    • 启用:sudo systemctl daemon-reload && sudo systemctl enable --now node
  • 容器化与反向代理:
    • Docker 示例:
      FROM node:18-alpine
      WORKDIR /app
      COPY package*.json ./
      RUN npm ci --only=production
      COPY . .
      CMD ["node","src/app.js"]
      
    • 使用 Nginx 反向代理到容器或 Node 服务,统一域名与端口、支持压缩与缓存。
  • 团队协作与任务管理:
    • 结合 PingCode(需求/缺陷/版本发布)与 Worktile(任务/文件/沟通)进行研发协作与进度跟踪,提升交付效率。

0