配置
$.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'
}