使用 npm-run-all2 简化你的 npm 脚本工作流

什么是 npm-run-all2?

npm-run-all2 是 npm-run-all 的一个维护分支,它是一个 CLI 工具,用于并行或顺序运行多个 npm 脚本。这个工具特别适合那些需要执行多个相关任务(如构建步骤、测试套件等)的 Node.js 项目。

为什么选择 npm-run-all2?

原始的 npm-run-all 包已经有一段时间没有积极维护了,npm-run-all2 作为社区维护的分支,解决了以下问题:

  • 保持与最新 Node.js 版本的兼容性
  • 修复了原始包中的一些长期存在的 bug
  • 提供了更好的 TypeScript 支持
  • 继续接受社区贡献

安装 npm-run-all2

bash 复制代码
npm install --save-dev npm-run-all2
# 或者
yarn add --dev npm-run-all2

基本用法

顺序运行脚本

使用 run-s 命令(或 npm-run-all2 -s)按顺序运行脚本:

json 复制代码
{
  "scripts": {
    "build": "run-s clean lint compile",
    "clean": "rimraf dist",
    "lint": "eslint src",
    "compile": "babel src -d dist"
  }
}

运行 npm run build 将依次执行 clean、lint 和 compile 脚本。

并行运行脚本

使用 run-p 命令(或 npm-run-all2 -p)并行运行脚本:

json 复制代码
{
  "scripts": {
    "test": "run-p test:*",
    "test:unit": "jest --config jest.unit.config.js",
    "test:integration": "jest --config jest.integration.config.js",
    "test:e2e": "cypress run"
  }
}

运行 npm run test 将同时运行所有测试脚本。

高级特性

带前缀的脚本名称

你可以使用通配符来匹配多个脚本:

json 复制代码
{
  "scripts": {
    "start": "run-p dev:*",
    "dev:server": "nodemon server.js",
    "dev:client": "webpack-dev-server",
    "dev:logger": "node logger.js"
  }
}

组合使用

你可以混合使用顺序和并行执行:

json 复制代码
{
  "scripts": {
    "deploy": "run-s build test deploy:now",
    "build": "run-p build:*",
    "build:js": "webpack",
    "build:css": "postcss src -d dist",
    "test": "jest",
    "deploy:now": "now --prod"
  }
}

参数传递

你可以向子脚本传递参数:

json 复制代码
{
  "scripts": {
    "lint": "run-s lint:*",
    "lint:js": "eslint",
    "lint:css": "stylelint"
  }
}

然后运行:

bash 复制代码
npm run lint -- --fix

这将把 --fix 参数传递给所有 lint 子脚本。

与原始 npm-run-all 的区别

  1. 更好的错误处理
  2. 改进的 Windows 支持
  3. 更新的依赖项
  4. 更清晰的调试输出

迁移指南

如果你正在使用原始的 npm-run-all,迁移到 npm-run-all2 非常简单:

  1. 卸载原始包:npm uninstall npm-run-all
  2. 安装新包:npm install --save-dev npm-run-all2
  3. 更新 package.json 中的脚本(如果需要)

大多数情况下,你甚至不需要更改任何脚本,因为 API 是完全兼容的。

结论

npm-run-all2 是一个强大的工具,可以帮助你简化复杂的 npm 脚本工作流。通过并行或顺序运行多个脚本,你可以创建更高效、更易维护的构建流程。如果你正在寻找原始 npm-run-all 包的替代品,npm-run-all2 是一个值得考虑的选择。

尝试在你的下一个项目中使用它,看看它如何简化你的开发工作流程!

相关推荐
梦曦i9 小时前
@meng-xi/create-uni-app vs unibest:轻量脚手架与重型框架的定位之争
前端·uni-app
平头哥技术团队9 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌恩大侠10 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
yume_sibai10 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
qiuhaipeng110 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
zzz_236810 小时前
个人 AI 记忆如何跨工具复用:用 Markdown、索引和 Skill 搭一个可治理的记忆库
前端·人工智能·react.js·前端框架·agent·agent测评
剑之所向12 小时前
.NET 官方`System.Threading.Channels`
前端·javascript·数据库
计算机魔术师13 小时前
GPT-6 Astra幻觉砍到2%,却被一种老招数轻松绕过
前端
cjy00011113 小时前
2026AI 产品如何从一次性 Demo 变成可重复使用的业务工具?
前端·人工智能·fde
IT_陈寒13 小时前
React的状态更新坑得我差点加班到天亮
前端·人工智能·后端