我有一个使用TypeScript的Next.js项目。我的E2E测试是用Cypress编写的。我需要告诉tsc
如何处理多个配置。它需要为不同的文件夹处理不同的配置。
Next.js'tsconfig.json
在项目根目录下是这样的。
{
"compilerOptions": {
"allowJs": true,
"baseUrl": "./src",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"isolatedModules": true,
"jsx": "preserve",
"lib": ["dom", "dom.iterable", "esnext"],
"module": "esnext",
"moduleResolution": "node",
"noEmit": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"strictPropertyInitialization": true,
"strictNullChecks": true,
"strict": true,
"target": "es5"
},
"exclude": ["node_modules"],
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"]
}
柏树有自己的cypress/tsconfig.json
。
{
"extends": "../tsconfig.json",
"compilerOptions": {
"target": "es5",
"lib": ["es5", "dom"],
"isolatedModules": false,
"types": ["cypress", "@testing-library/cypress"],
"noEmit": true
},
"include": [
"**/*.ts"
]
}
我有一个"type-check"
脚本。
"type-check": "tsc --pretty --noEmit"
运行此脚本失败,因为它试图使用项目根目录的配置编译Cypress文件夹。我如何编写这个类型检查命令,以便它为每个文件夹使用正确的tsconfig.json
?
我认为实现这一目标的最简单方法是让您的type-check
脚本运行tsc两次,一次为您的nextjs文件,一次为您的cypress文件:
"type-check": "tsc -p tsconfig.json --pretty --noEmit && tsc -p cypress/tsconfig.json --pretty --noEmit"
您还需要修改nextjstsconfig.json
以排除cypress文件夹中的文件:
"exclude": ["node_modules", "cypress"],
(这可能是一个好主意在任何情况下-你的下一个应用程序不需要编译失败,如果有一个错误在你的cypress文件)。