From 754bdb8d71e99372b1bcd5b91ef6670cb24a3bc6 Mon Sep 17 00:00:00 2001 From: Ahn Date: Thu, 18 Feb 2021 17:29:07 +0100 Subject: [PATCH] fix(compiler): exclude `outDir` from compiler source files Closes #2350 Closes #2374 --- src/compiler/language-service.ts | 7 +++++-- src/config/config-set.spec.ts | 3 +-- src/config/config-set.ts | 6 ++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/compiler/language-service.ts b/src/compiler/language-service.ts index aaaaccc8cf..612c431a21 100644 --- a/src/compiler/language-service.ts +++ b/src/compiler/language-service.ts @@ -5,7 +5,7 @@ import memoize = require('lodash/memoize') import mkdirp = require('mkdirp') import type * as _ts from 'typescript' -import type { ConfigSet } from '../config/config-set' +import { ConfigSet, TS_JEST_OUT_DIR } from '../config/config-set' import { LINE_FEED } from '../constants' import type { CompilerInstance, SourceOutput } from '../types' import { Errors, interpolate } from '../utils/messages' @@ -75,7 +75,10 @@ export const initializeLanguageServiceInstance = (configs: ConfigSet, logger: Lo } // Initialize memory cache for typescript compiler configs.parsedTsConfig.fileNames - .filter((fileName: string) => !configs.isTestFile(fileName)) + .filter( + (fileName: string) => + !configs.isTestFile(fileName) && !fileName.includes(configs.parsedTsConfig.options.outDir ?? TS_JEST_OUT_DIR), + ) .forEach((fileName: string) => { memoryCache.files.set(fileName, { version: 0, diff --git a/src/config/config-set.spec.ts b/src/config/config-set.spec.ts index 2f0e006ba8..65c4fdb466 100644 --- a/src/config/config-set.spec.ts +++ b/src/config/config-set.spec.ts @@ -12,7 +12,7 @@ import { getPackageVersion } from '../utils/get-package-version' import { normalizeSlashes } from '../utils/normalize-slashes' import { mocked } from '../utils/testing' -import { ConfigSet, MY_DIGEST, TS_JEST_OUT_DIR } from './config-set' +import { ConfigSet, MY_DIGEST } from './config-set' jest.mock('../utils/backports') jest.mock('../index') @@ -73,7 +73,6 @@ describe('parsedTsConfig', () => { { module: ts.ModuleKind.CommonJS, inlineSources: true, - outDir: TS_JEST_OUT_DIR, }, ) }) diff --git a/src/config/config-set.ts b/src/config/config-set.ts index e8efc82cb0..e4131fd801 100644 --- a/src/config/config-set.ts +++ b/src/config/config-set.ts @@ -164,8 +164,6 @@ export class ConfigSet { // to clear out else it's buggy out: undefined, outFile: undefined, - // ensure that `LanguageService` won't pick up things from `build` folder which can lead to emit skipped error - outDir: TS_JEST_OUT_DIR, composite: undefined, // see https://github.com/TypeStrong/ts-node/pull/657/files declarationDir: undefined, declarationMap: undefined, @@ -485,6 +483,10 @@ export class ConfigSet { finalOptions.allowSyntheticDefaultImports = true } } + // Make sure when allowJs is enabled, outDir is required to have when using allowJs: true + if (finalOptions.allowJs && !finalOptions.outDir) { + finalOptions.outDir = TS_JEST_OUT_DIR + } // ensure undefined are removed and other values are overridden for (const key of Object.keys(forcedOptions)) {