如何在不覆盖原有配置的前提下扩展TypeScript的include项?
解决方法:合并父配置的
include与自定义规则 TypeScript 的配置继承机制中,子配置如果显式声明了 include 字段,会直接覆盖父配置的 include 数组,而不是自动合并。要实现「保留父配置原有文件 + 添加新文件」的需求,你可以选择以下两种方案:
方案1:将配置文件改为JS格式(推荐,自动同步父配置)
把 tsconfig.lib.json 重命名为 tsconfig.lib.js,这样就能使用 JavaScript 的语法来读取并合并父配置的 include 规则:
const baseConfig = require('../../tsconfig.json'); module.exports = { extends: '../../tsconfig.json', exclude: ['src/test.ts', '**/*.spec.ts'], include: [...baseConfig.include, '**/*.stories.ts'] };
这样做的好处是,父配置的 include 有任何修改,子配置会自动同步,不需要手动维护。注意要确保你的 TypeScript 版本支持这种 JS 格式的配置文件(TS 2.1+ 就支持了)。
方案2:手动合并父配置的include规则(简单但需手动同步)
如果你不想改成JS格式,可以先查看父配置 ../../tsconfig.json 里的 include 内容,然后将它和你的新规则一起写到子配置的 include 数组中。
比如假设父配置的 include 是 ["src/**/*"],那么子配置就写成:
{ "extends": "../../tsconfig.json", "exclude": ["src/test.ts", "**/*.spec.ts"], "include": ["src/**/*", "**/*.stories.ts"] }
这种方式的缺点是,如果父配置的 include 后续有变更,你需要手动更新子配置的数组,否则会丢失父配置的规则。
额外注意:路径的相对位置
include 中的路径是相对于当前配置文件所在目录的,所以如果父配置的 include 用了相对路径,要确保子配置里的路径解析正确,避免出现文件找不到的问题。
内容的提问来源于stack exchange,提问作者Eliezer Berlin
相关产品推荐
相关产品推荐

