转译时排除 *.spec.ts 文件,但仍能正确 lint
Posted
技术标签:
【中文标题】转译时排除 *.spec.ts 文件,但仍能正确 lint【英文标题】:Exclude *.spec.ts files when transpiling but still lint them properly 【发布时间】:2019-02-19 18:06:26 【问题描述】:如何排除 typescript 文件被转译,但仍确保它们与 Atom 编辑器中的 linter 一起正常工作?
我的*.spec.ts
文件中出现此错误:
ES5/ES3 中的异步函数或方法需要“Promise” 构造函数。确保您有“承诺”的声明 构造函数或在
--lib
选项中包含“ES2015”。
出现问题是因为我明确排除了包含所有测试文件的目录(请参阅下面的 tsconfig 文件),因为我不希望在构建项目时将这些文件转译为 javascript。但是,当我在 Atom 编辑器中查看这些文件时,我确实希望 tslint 插件正确地检查这些文件。
我的设置:
Atom.io 1.30 带插件: 原子打字稿 12.6.3 语言-打字稿 0.4.0 linter-tslint 1.9.1 tslint 5.9.1 打字稿 3.0.1我的tsconfig.json
文件:
"compileOnSave": false,
"compilerOptions":
"allowUnreachableCode": false,
"allowUnusedLabels": false,
"baseUrl": ".",
"declaration": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"inlineSourceMap": true,
"inlineSources": true,
"lib": [
"es2017",
"dom"
],
"moduleResolution": "node",
"newLine": "lf",
"noImplicitReturns": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "./dist",
"target": "es5",
"typeRoots": [
"node_modules/@types"
]
,
"exclude": [
"./spec",
"./dist"
]
【问题讨论】:
【参考方案1】:您需要使用两个tsconfig.json
文件,一个用于编辑器(包括*.spec.ts
文件),另一个用于编译(不包括它们)。您可以使用extends
在两个文件之间共享大部分选项。见this discussion。
【讨论】:
这对我有用。我能够在我的 spec/ 目录中添加第二个 tsconfig.json 文件。 Atom 编辑器自动找到该文件并使用它覆盖父目录中的主 tsconfig 文件。以上是关于转译时排除 *.spec.ts 文件,但仍能正确 lint的主要内容,如果未能解决你的问题,请参考以下文章
带有 TypeScript 解析器/插件的 ESLint:如何包含从 tsconfig.json 中排除的 .spec.ts?
仅将 TypeScript 环境声明添加到特定文件(如 *.spec.ts)