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

使用 concurrently 实现前后端一键启动

使用 concurrently 实现前后端一键启动

本文适合: 前后端分离项目(如 React + Node.js),希望通过一条命令同时启动前端和后端服务。
工具链: Node.js、npm、concurrently。
耗时: 3 分钟。

文章目录

  • 使用 concurrently 实现前后端一键启动
    • @[toc]
    • 一、场景需求
    • 二、解决方案:concurrently
    • 三、操作步骤
      • 1. 项目结构
      • 2. 初始化根目录的 package.json
      • 3. 安装 concurrently
      • 4. 配置启动脚本
        • 参数说明:
      • 5. 一键启动
    • 四、注意事项
      • 1. 路径问题
      • 2. 端口冲突
      • 3. 依赖安装
      • 4. 终止所有进程
    • 五、总结

一、场景需求

在开发前后端分离项目时,通常需要:

  1. 启动前端服务(如 npm run start)。
  2. 启动后端服务(如 npm run dev)。
    每次手动打开两个终端分别执行命令非常繁琐,如何通过一条命令一键启动?

二、解决方案:concurrently

concurrently 是一个 Node.js 工具,可以并行执行多个命令,并合并日志输出到同一终端。


三、操作步骤

1. 项目结构

假设项目结构如下:

my-project/  
├── frontend/     # 前端项目(如 React)  
├── backend/      # 后端项目(如 Express)  
└── package.json  # 根目录的 package.json(需新建)

2. 初始化根目录的 package.json

在项目根目录(my-project/)执行:

npm init -y

3. 安装 concurrently

npm install concurrently --save-dev

4. 配置启动脚本

修改根目录的 package.json,添加以下内容:

{
  "scripts": {
    "start:frontend": "cd frontend(你的前端地址) && npm start",
    "start:backend": "cd backend(你的后端地址) && npm run dev",
    "start": "concurrently \"npm run start:frontend\" \"npm run start:backend\""
  }
}
参数说明:
  • start:frontend:进入前端目录并启动前端服务(假设前端使用 npm start)。
  • start:backend:进入后端目录并启动后端服务(假设后端使用 npm run dev)。
  • start:并行执行前端和后端启动命令。

5. 一键启动

在根目录执行:

npm run start

终端会同时输出前后端日志,效果如下:

在这里插入图片描述


四、注意事项

1. 路径问题

确保 frontendbackend 目录名称与你的项目实际目录一致。如果路径不同,需修改脚本中的路径:

"start:frontend": "cd your-frontend-folder && npm start"

2. 端口冲突

若前后端服务端口冲突(如都使用 3000),需修改其中一个服务的端口号。

  • 前端修改端口(React):在 frontend/package.json 中修改:
    "scripts": {
      "start": "set PORT=3001 && react-scripts start"  # Windows
      // 或
      "start": "PORT=3001 react-scripts start"         # macOS/Linux
    }
    

3. 依赖安装

确保前后端项目已安装依赖:

cd frontend && npm install
cd backend && npm install

4. 终止所有进程

Ctrl + C 可一次性终止所有并行进程。


五、总结

通过 concurrently,我们只需一条命令即可实现前后端服务的同时启动,大幅提升开发效率。此方案适用于任何需要并行执行命令的场景(如多微服务项目)。

完整代码示例: Gitee 链接


http://www.kler.cn/a/524567.html

相关文章:

  • 春晚舞台上的人形机器人:科技与文化的奇妙融合
  • 基于Cipher的Java加密工具类
  • 设计模式-建造者模式、原型模式
  • 神经网络|(五)概率论基础知识-条件概率
  • Linux 非阻塞IO
  • 【PowerQuery专栏】PowerQuery实现数据库访问系列函数
  • 深入理解 C 语言基本数据类型:从常量变量到输入输出
  • STM32 PWM驱动舵机
  • 【信息系统项目管理师-选择真题】2007下半年综合知识答案和详解
  • Leetcode45:跳跃游戏 II
  • SpringBoot 中的测试jar包knife4j(实现效果非常简单)
  • 关于opencv环境搭建问题:由于找不到opencv_worldXXX.dll,无法执行代码,重新安装程序可能会解决此问题
  • 基于django的智能停车场车辆管理深度学习车牌识别系统
  • 如何把obsidian的md文档导出成图片,并加上文档属性
  • 从源码中学习包的命名
  • 剑指 Offer II 001. 整数除法
  • 步进电机加减速公式推导
  • three.js用粒子使用canvas生成的中文字符位图材质
  • 【Proteus仿真】【51单片机】简易计算器系统设计
  • python-leetcode-从中序与后序遍历序列构造二叉树
  • 【Spark速通】
  • MV结构下设置Qt表格的代理
  • EXCEL教程:如何打开Excel隐藏部分?
  • JavaScript - Web APIs(上)
  • 基于Arcsoft的人脸识别
  • doris:异常数据处理