NX Monorepo中配置tsgo编译器时遭遇Schema校验错误
NX Monorepo中配置tsgo编译器时遭遇Schema校验错误
哎,我前阵子刚在自己的NX monorepo里折腾TypeScript 7的原生预览编译器(tsgo),完全懂你遇到的Schema校验报错有多闹心!下面是我踩坑后摸索出来的解决办法,亲测有效:
首先得搞清楚为啥会报错:NX的默认配置Schema里,build target的compiler字段只预定义了tsc、swc、esbuild这些常见选项,tsgo作为新出的预览版编译器,还没被加到默认的允许列表里,所以一修改就触发Schema校验失败。
给你两种解决思路,按需选:
临时快速方案:跳过Schema校验
如果你只是想快速测试tsgo的功能,不想折腾复杂配置,可以直接在project.json的buildtarget里加个$schema: null,让NX跳过这个target的所有Schema校验。配置大概是这样:"targets": { "build": { "$schema": null, "options": { "target": "node", "compiler": "tsgo", // 你的其他build配置 } } }不过要提醒你,这个方法是饮鸩止渴——关掉校验后,你写错其他配置参数NX也不会提醒,所以只适合短期测试用。
规范长期方案:扩展NX的Schema
要是想长期用tsgo,最好自己扩展NX的Schema,把tsgo加到compiler的允许值里:- 在项目根目录新建一个自定义Schema文件,比如
schemas/custom-build-schema.json,内容如下:
(注意:如果你的项目是React/Vue这类,要把extends的路径改成对应包的build schema,比如{ "extends": "@nx/js/src/builders/build/schema.json", "properties": { "compiler": { "type": "string", "enum": ["tsc", "swc", "esbuild", "tsgo"], "description": "指定项目构建使用的编译器" } } }@nx/react/src/builders/build/schema.json) - 回到
project.json的buildtarget,指定用这个自定义Schema:"targets": { "build": { "$schema": "./schemas/custom-build-schema.json", "executor": "@nx/js:build", "options": { "target": "node", "compiler": "tsgo", // 你的其他build配置 } } }
这样既让NX认可tsgo这个编译器选项,又能保留其他配置项的Schema校验,完美兼顾规范和需求。
- 在项目根目录新建一个自定义Schema文件,比如
最后再补两个小提醒:
- 确保你装的
@typescript/native-preview是最新的预览版,旧版本可能和NX的适配有问题; - 配置完后跑
nx build <你的项目名>测试,如果还有问题,加个--verbose参数看详细日志,能更快定位问题。
内容来源于stack exchange
相关产品推荐
相关产品推荐

