能否将编译生成的.js文件与对应.ts文件放置在同一目录下?
当然可以做到!这其实是TypeScript编译配置里很容易调整的设置,不用复杂操作,只需要修改tsconfig.json里的几个参数就行。
具体步骤:
调整
outDir配置
打开项目根目录的tsconfig.json,找到compilerOptions下的outDir项——这就是之前让所有.js文件统一输出到dist/的核心配置。直接删除或者注释掉这个配置,因为outDir是指定统一输出目录的开关,移除它之后,TypeScript默认会把编译产物放在对应源文件的同一目录下。配置
rootDir(可选但建议)
如果你的源文件都集中在某个根目录下(比如例子里的app/),可以设置rootDir指向这个目录,确保TypeScript能严格匹配源文件和输出文件的层级结构。比如:"rootDir": "./app"这个配置会告诉TS只编译
app/下的文件,并且完全保留原有的目录结构,编译后的.js文件就会和对应的.ts文件处于同一位置。确认
include规则
要保证TS能找到所有需要编译的.ts文件,在tsconfig.json里设置正确的include规则,比如:"include": ["app/**/*"]这会包含
app/目录下所有子文件夹和文件,不会遗漏任何需要编译的源文件。
示例完整配置:
修改后的tsconfig.json大概长这样:
{ "compilerOptions": { "rootDir": "./app", "target": "ES6", "module": "CommonJS", "strict": true, // 其他你需要的编译配置... }, "include": ["app/**/*"], "exclude": ["node_modules"] }
额外小提示:
如果不想把编译后的.js(以及类型声明文件.d.ts)提交到版本控制,可以在项目根目录的.gitignore里添加:
*.js *.d.ts
这样就能避免误提交编译产物啦。
如果你的项目还用到了Webpack、Vite这类构建工具,可能需要同步调整它们的输出配置,但如果只是用tsc命令直接编译,上面的设置就完全够用了。
内容的提问来源于stack exchange,提问作者milan

