You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript项目中分离src/与test/目录?

TypeScript项目分离源码与测试代码的最佳方案

针对你遇到的问题——生产编译时不想暴露test目录,但测试文件无法导入test内部工具,最清晰可靠的方案是使用两个TypeScript配置文件,分别对应生产编译和测试场景:

1. 保留生产编译用的tsconfig.json

保持你原有的配置不变,确保仅编译src目录内容,输出到dist,避免test代码被打包或对外暴露:

{
  "extends": "../../tsconfig.build.json",
  "compilerOptions": {
    "baseUrl": ".",
    "outDir": "dist",
    "rootDir": "./src",
    "composite": true
  },
  "include": ["src/**/*"]
}

2. 创建测试专用的tsconfig.test.json

新增这个配置文件,用于测试环境的类型检查和模块解析,允许TypeScript识别src和test两个目录:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "rootDir": ".",
    "noEmit": true // 测试无需单独编译输出,仅做类型检查
  },
  "include": ["src/**/*", "test/**/*"]
}

3. 配置测试工具使用该配置

将你的测试运行工具(如Jest、Vitest)指向这个测试专用配置。比如在Jest配置中添加:

// jest.config.js
module.exports = {
  // 其他配置...
  globals: {
    'ts-jest': {
      tsconfig: './tsconfig.test.json'
    }
  }
}

如果用Vitest,可在vite.config.ts中指定:

// vite.config.ts
import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    // 其他配置...
    tsconfig: './tsconfig.test.json'
  }
})

为什么这个方案最优?

  • 生产编译完全隔离test目录,符合你不对外暴露测试代码的需求
  • 测试环境能正常解析test内部的工具文件,解决导入报错问题
  • 通过继承配置,避免重复编写基础编译选项,保持配置一致性

内容的提问来源于stack exchange,提问作者Sasgorilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 15:47:39