SuperAPI AI 工具集

wireit

通用与其它

查看项目

更新于 10-15 21:43

技能介绍

用途:Wireit 用于编排 npm 脚本,把编译、打包、测试等任务按显式依赖关系组织成构建流水线,并通过缓存跳过未变化的任务。完整文档见 https://github.com/google/wireit。

主要能力:依赖需显式列出,不会从 npm workspace 关系自动推断;若某任务需在另一任务前执行(如 compile 先于 bundle),即声明为依赖。依赖可写相对路径,如 "../../other-pkg:script-name"。若本仓库某包把另一包列为 package.json 的 dep 或 devDep,则 compile 应将其设为 wireit 依赖;若某扩展把另一扩展列为 extensionDependency,则 bundle 应将其设为 wireit 依赖。指定 files 与 output(即使 output 为 [])即可获得缓存,两者都未变化时跳过执行。wireit 脚本可以不是 npm 脚本,此时不能单独执行,但可作为其他可从 npm run 启动的 wireit 脚本的依赖运行。不要制造循环引用。环境变量配置见官方文档。

使用方式:用 WIREIT_CACHE=none 运行命令可避免缓存行为。传递 CLI 参数用 npm run {script} -- {script args},单个 -- 会把参数转发给底层命令,例如 npm run build -- --verbose 会把 --verbose 传给 wireit.build.command 中的命令。顶层 compile、lint、test 应覆盖各包对应任务,新增包时需同步更新。

限制与注意:wireit 无法跟踪 files 之外的内容,例如手动修改 node_modules 后再运行 compile 或 bundle;例外是 salesforcedx-vscode-services 的 vscode:bundle 会跟踪 node_modules/@salesforce/templates/lib/**。npm link 的包(如指向本地修改库的符号链接)也不被跟踪。智能体不应运行不会退出的脚本,包括任何带 --watch 的脚本,以及 service:true 的脚本。若出现 "Unknown error thrown: Error: Did not expect..." 或 "Internal error!",通常是另一进程在运行相同脚本,请自行重跑确认,不要通过清除 .wireit 来解决。每个包有各自的 .wireit 缓存,顶层也有一个。