无需创建新tsconfig.json,如何覆盖tsconfig的include配置?
如何通过tsc CLI直接覆盖include配置?
我们的tsconfig.json配置如下:
{ "compilerOptions": { "allowSyntheticDefaultImports": true, "checkJs": false, "declaration": true, "esModuleInterop": true, "jsx": "react-jsx", "lib": [ "es2021", "dom" ], "module": "commonjs", "moduleResolution": "node", "noImplicitReturns": true, "noUnusedLocals": true, "noUnusedParameters": true, "outDir": "dist", "skipLibCheck": true, "strict": true, "target": "es2018" }, "include": [ "src", "tests" ] }
该配置会导致dist目录同时包含src和tests子目录,输出结构如下:
$ tree dist -L 1 dist ├── src └── tests 2 directories, 0 files
若要仅构建src目录的内容,常规做法是创建如tsconfig.build.json的新配置文件,继承原配置并覆盖include字段:
{ "extends": "./tsconfig.json", "include": [ "src" ] }
但在拥有数百个包的monorepo中,这种方式十分繁琐。
可以直接通过tsc CLI指定编译路径来覆盖配置文件中的include规则,无需创建额外配置文件。
具体做法是执行tsc命令时,传入src目录的路径,同时用--project(或简写-p)指定原配置文件——CLI传入的文件路径优先级会高于配置文件中的include,TypeScript会忽略原配置里的include,只编译你指定的内容。
示例命令:
tsc -p tsconfig.json src/**/*
或者更简洁的写法:
tsc -p tsconfig.json src/**
执行后,dist目录只会生成src对应的编译产物,不会包含tests相关内容。
内容的提问来源于stack exchange,提问作者Gajus
相关产品推荐
相关产品推荐

