如何仅编译项目根目录的config.ts而不复制到outDir?
解决思路:仅编译config.ts但不输出到dist目录
嘿,我明白你的需求了——既要对根目录的config.ts做类型检查(也就是“编译”它),又不想让它的编译产物出现在dist目录里,毕竟它只是开发依赖,不属于应用代码。这里有几个实用的方案供你选择:
方案一:单独执行类型检查(不生成任何输出文件)
这是最直接的方式,因为你只需要确保config.ts的类型正确,不需要它的编译产物。你可以在package.json的scripts里新增相关命令:
{ "scripts": { "build": "tsc", // 原来编译src到dist的命令 "check-config": "tsc config.ts --noEmit", "prebuild": "npm run check-config" // 让构建前自动检查config.ts } }
--noEmit参数会让TypeScript只做类型检查,不会生成任何.js或.d.ts文件,完美匹配你的需求。- 加上
prebuild脚本,每次执行npm run build时都会自动先检查config.ts的类型,不用手动单独执行。
方案二:用单独的tsconfig文件管理config.ts的检查
如果你的项目配置比较复杂,不想用命令行参数,也可以创建一个专门的tsconfig文件来处理config.ts:
- 在项目根目录新建
tsconfig.config.json,内容如下:
{ "extends": "./tsconfig.json", // 继承主配置的编译选项 "include": ["config.ts"], "compilerOptions": { "noEmit": true // 只做类型检查,不输出文件 } }
- 然后更新
package.json的scripts:
{ "scripts": { "build": "tsc && tsc --project tsconfig.config.json" } }
这样主命令tsc负责编译src到dist,第二个命令用专门的配置检查config.ts,逻辑更清晰。
方案三:如果确实需要编译产物,但不想放到dist里
要是你其实需要config.ts的编译产物,但只是不想放到dist,可以指定单独的输出目录,然后把这个目录加入.gitignore:
{ "scripts": { "build": "tsc && tsc config.ts --outDir .dev-config" } }
然后在.gitignore里添加:
.dev-config/
这样编译后的config.js会放到.dev-config目录,不会污染你的应用输出目录dist。
补充说明
你的当前tsconfig.json里设置了rootDir: "./src",这意味着默认情况下TypeScript不会处理根目录的config.ts(因为它不在src下),所以上面的方案都是主动让TypeScript处理它,但控制输出行为,正好匹配你的需求。
内容的提问来源于stack exchange,提问作者Legends
相关产品推荐
相关产品推荐

