跳到内容

配置

$.shell

指定使用的 shell。默认为 which bash

js
$.shell = '/usr/bin/bash'

或者使用 CLI 参数:--shell=/bin/bash

$.spawn

指定一个 spawn API。默认为 require('child_process').spawn

要覆盖同步 API 实现,请相应地设置 $.spawnSync

$.prefix

指定将添加到所有运行命令前面的命令。

默认为 set -euo pipefail;

或者使用 CLI 参数:--prefix='set -e;'

$.postfix

$.prefix 类似,但用于命令的末尾。

js
$.postfix = '; exit $LastExitCode' // for PowerShell compatibility

$.preferLocal

指定是否优先使用位于 node_modules/.bin 中的二进制文件,而不是全局系统安装的二进制文件。

js
$.preferLocal = true

await $`c8 npm test`

您还可以指定一个目录来搜索本地二进制文件

js
$.preferLocal = '/some/to/bin'
$.preferLocal = ['/path/to/bin', '/another/path/bin']

$.quote

指定一个函数,用于在命令替换期间转义特殊字符。

$.verbose

指定详细程度。默认为 false

在详细模式下,zx 打印所有执行的命令及其输出。

或者使用 CLI 参数:--verbose 设置为 true

$.quiet

抑制所有输出。默认为 false

通过 CLI 参数:--quiet 设置 $.quiet = true

$.env

指定一个环境变量映射。

默认为 process.env

$.cwd

指定使用 $ 创建的所有进程的当前工作目录。

cd() 函数仅更改 process.cwd(),如果没有指定 $.cwd,则所有 $ 进程默认使用 process.cwd()(与 spawn 行为相同)。

$.log

指定一个 日志函数

ts
import {LogEntry, log} from 'zx/core'

$.log = (entry: LogEntry) => {
  switch (entry.kind) {
    case 'cmd':
      // for example, apply custom data masker for cmd printing
      process.stderr.write(masker(entry.cmd))
      break
    default:
      log(entry)
  }
}

Log 主要用作调试器,因此默认情况下它使用 process.error 进行输出。设置 log.output 以更改流。

ts
$.log.output = process.stdout

设置 log.formatters 以自定义每种日志条目类型的打印

ts
$.log.formatters = {
  cmd: (entry: LogEntry) => `CMD: ${entry.cmd}`,
  fetch: (entry: LogEntry) => `FETCH: ${entry.url}`
}

$.timeout

指定命令执行的超时时间。

js
$.timeout = '1s'
$.timeoutSignal= 'SIGKILL'

await $`sleep 999`

$.defaults

保存默认配置值。如果未指定相应的 $ 选项,则将使用这些值。

ts
$.defaults = {
  cwd:            process.cwd(),
  env:            process.env,
  verbose:        false,
  quiet:          false,
  sync:           false,
  shell:          true,
  prefix:         'set -euo pipefail;',   // for bash
  postfix:        '; exit $LastExitCode', // for powershell
  nothrow:        false,
  stdio:          'pipe', // equivalent to ['pipe', 'pipe', 'pipe']
  detached:       false,
  preferLocal:    false,
  spawn:          childProcess.spawn,
  spawnSync:      childProcess.spawnSync,
  log:            $.log,
  killSignal:     'SIGTERM',
  timeoutSignal:  'SIGTERM'
}

免责声明:这不是 Google 官方支持的产品。