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

Concurrently 一键启动客户端和服务器

目录

简介

安装

使用场景

同时运行多个 npm scripts

顺序运行 npm scripts

运行命令和 npm scripts

传递环境变量和输入

前缀日志

案例


简介

concurrently 是一个运行并发任务的工具库,可以帮助我们在 Node.js 中轻松管理多个异步任务。

安装

使用 npm 安装 concurrently:

1
npm install concurrently --save-dev

使用场景

同时运行多个 npm scripts

package.json:

1
2
3
"scripts": {
  "start": "concurrently \"npm run server\" \"npm run client\""
}

运行 npm start将同时运行 npm run server 和 npm run client。

顺序运行 npm scripts

package.json:

1
2
3
"scripts": {
  "prepare": "concurrently npm:install:package-lock npm:install" 
}

运行 npm run prepare将先运行 npm:install:package-lock,完成后再运行 npm:install。

运行命令和 npm scripts

package.json:

1
2
3
"scripts": {
  "start": "concurrently \"npm run client\" \"cd server && nodemon server.js\""
}

运行 npm start 将同时运行 npm run client 和 cd server && nodemon server.js。

传递环境变量和输入

package.json:

1
2
3
"scripts": {
  "start": "concurrently \"npm run server\" \"npm run client\" --kill-others-on-fail --env NODE_ENV=production"
}

运行 npm start 将设置 NODE_ENV=production环境变量传递给 npm run server 和 npm run client。

–kill-others-on-fail 选项指定如果其中一个任务失败,其他运行的任务也会被 killed。

你也可以在运行 concurrently 时输入 ENV_VAR=value 来设置环境变量。

前缀日志

package.json:

1
2
3
"scripts": {
  "start": "concurrently \"npm run server\" \"npm run client\"  --names \"SERVER,CLIENT\""
}

运行 npm start 将为日志加上 [SERVER] 和 [CLIENT] 前缀,区分来自哪个任务的日志。

案例

在日常的全栈开发过程中,往往会同时启动服务器和客户端工程,分别启动服务器和客户端往往会不可避免的造成一定时间浪费和开发流程繁杂.本着能躺着就别坐着的原则,在万能的npm库中找到了concurrently


如下面package.json内的脚本代码所示,concurrently将服务端及客户端项目的启动合并在一起了.妈妈再也不用担心我浪费时间在启动项目上了😊.

--prefix 的作用是:编译的时候用来指定程序存放路径 。

NODE_ENV=development的作用是:设置环境变量

concurrently的作用为:合并命令

  "scripts": {
    "start": "node server.js",
    "server": "NODE_ENV=development nodemon server.js",
    "web-install": "npm install --prefix ../web",
    "web": "npm start --prefix ../web",
    "dev": "concurrently \"npm run server\" \"npm run web\""
  },


http://www.kler.cn/news/334461.html

相关文章:

  • 【学习笔记】一种使用多项式快速计算 sin 和 cos 近似值的方法
  • Python爬虫(二)--http基本原理(Python Crawler (2) Basic Principles of HTTP)
  • C++ 语言特性24 - inline 和 static 关键字
  • 为什么芯片有多个不同的供电电压?
  • Redis几种数据类型的适用场景
  • 开启AI新篇章:探索GPT-4与大模型!订阅方案!简单支付!
  • MySQL的ON DUPLICATE KEY UPDATE和REPLACE INTO
  • 将列表中的各字符串sn连接成为一个字符串s使用;将各sn间隔开os.pathsep.join()
  • Spring Boot大学生就业招聘系统的架构与实现
  • UIAbility组件
  • 父类的final方法能不能够被子类重写?
  • CSP-S 2022 T1假期计划
  • 2024年【危险化学品经营单位安全管理人员】考试试卷及危险化学品经营单位安全管理人员复审模拟考试
  • CSS样式基础样式选择器(案例+代码实现+效果图)
  • Replit Agent:AI驱动的全自动化软件开发革命
  • Kafka 快速入门
  • 钰泰-ETA1467降压DC-DC芯片
  • c# object和dynamic的区别
  • 打造银行智能营销助手:大模型助力精准营销
  • [单master节点k8s部署]30.ceph分布式存储(一)