📌  相关文章
📜  如何执行更多命令脚本 package.json - TypeScript (1)

📅  最后修改于: 2023-12-03 15:38:47.214000             🧑  作者: Mango

如何执行更多命令脚本 package.json - TypeScript

在 TypeScript 项目中,我们经常需要执行一些命令行脚本,比如编译 TypeScript 代码、启动服务、运行测试用例等。为了简化这些操作,我们可以将这些命令封装到 package.json 的 scripts 字段中,然后通过 npm 命令来调用。

scripts 字段

在 package.json 中,scripts 字段是一个对象,可以定义一系列的命令行脚本。每个脚本都有一个名称和一个对应的 shell 命令。

例如,以下是一个简单的 package.json 文件,定义了三个脚本:

{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "build": "tsc",
    "start": "nodemon src/index.ts",
    "test": "jest"
  },
  "devDependencies": {
    "typescript": "^4.0.0",
    "nodemon": "^2.0.4",
    "jest": "^26.5.3"
  }
}

上面的 scripts 字段定义了三个脚本:

  • build: 编译 TypeScript 代码,调用 tsc 命令。
  • start: 启动服务,调用 nodemon 命令,并自动重启服务。
  • test: 运行测试用例,调用 jest 命令。

这些脚本都可以通过 npm run 命令来调用,例如:

$ npm run build
$ npm run start
$ npm run test

在执行 npm run 命令时,npm 会自动将当前目录下的 node_modules/.bin 目录添加到 PATH 环境变量中,因此可以直接调用 tscnodemonjest 命令。

传递参数

如果脚本需要传递参数,可以在命令后面加上参数,例如:

{
  "scripts": {
    "build": "tsc",
    "start": "nodemon src/index.ts",
    "test": "jest",
    "test:watch": "npm run test -- --watchAll"
  }
}

以上的 test:watch 脚本调用了 npm run test 命令,并传递了一个参数 --watchAll

并行执行

有时候,需要同时执行多个命令,可以使用 & 连接符将多个命令串行执行,例如:

{
  "scripts": {
    "build": "tsc",
    "start": "nodemon src/index.ts",
    "test": "jest",
    "test:e2e": "npm run start & npm run test"
  }
}

以上的 test:e2e 脚本将同时启动服务和运行测试用例。

继承配置

如果有多个项目需要执行相同的命令,可以将这些命令定义在一个公共的 package.json 文件中,然后在每个项目的 package.json 文件中继承这些命令。在子项目中,可以通过 npm run <script> 来调用公共脚本。

例如,有一个公共的 package.json 文件,定义了以下脚本:

{
  "name": "my-common-scripts",
  "version": "1.0.0",
  "scripts": {
    "build": "tsc",
    "test": "jest"
  },
  "devDependencies": {
    "typescript": "^4.0.0",
    "jest": "^26.5.3"
  }
}

现在,我们需要在一个 TypeScript 项目中使用这些脚本,可以在子项目的 package.json 文件中引入公共的 package.json 文件:

{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "test": "npm run my-common-scripts:test",
    "build": "npm run my-common-scripts:build"
  },
  "devDependencies": {
    "my-common-scripts": "^1.0.0"
  }
}

以上的 testbuild 脚本继承了公共的 testbuild 脚本。

总结

在 TypeScript 项目中,使用 package.json 的 scripts 字段可以简化命令行操作,方便执行常用的命令。可以传递参数、串行执行多个命令,甚至可以继承公共的配置。使用 npm 命令可以轻松调用这些脚本,提高开发效率。