From 7cae2f5d255fbdfd59347814041a748198edac41 Mon Sep 17 00:00:00 2001 From: Logan McAnsh Date: Thu, 28 Apr 2022 10:29:23 -0400 Subject: [PATCH 1/6] chore(remix-dev): when using jsconfig, include js files instead of ts Signed-off-by: Logan McAnsh (cherry picked from commit 203ee0c998f39eea9c90e3ec327b0b44856b7f65) Signed-off-by: Logan McAnsh --- integration/tsconfig-test.ts | 27 ++++++++++++++++--- .../utils/tsconfig/write-config-defaults.ts | 11 ++++++-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/integration/tsconfig-test.ts b/integration/tsconfig-test.ts index 61da678887e..f0cc4a7e90e 100644 --- a/integration/tsconfig-test.ts +++ b/integration/tsconfig-test.ts @@ -6,9 +6,12 @@ import type { TsConfigJson } from "type-fest"; import { createFixture, json } from "./helpers/create-fixture"; -async function getTsConfig(projectDir: string) { - let tsconfigPath = path.join(projectDir, "tsconfig.json"); - let config = await fse.readFile(tsconfigPath, "utf8"); +async function getTsConfig( + projectDir: string, + configType: "tsconfig.json" | "jsconfig.json" = "tsconfig.json" +) { + let configPath = path.join(projectDir, configType); + let config = await fse.readFile(configPath, "utf8"); return JSON5.parse(config); } @@ -119,3 +122,21 @@ test("allows for `extends` in tsconfig", async () => { ...expected, }); }); + +test("works with jsconfig", async () => { + let config = { + compilerOptions: DEFAULT_CONFIG.compilerOptions, + }; + + let fixture = await createFixture({ + files: { + "jsconfig.json": json(config), + }, + }); + + let jsconfig = await getTsConfig(fixture.projectDir, "jsconfig.json"); + expect(jsconfig).toEqual({ + ...config, + include: ["**/*.js", "**/*.jsx"], + }); +}); diff --git a/packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts b/packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts index 320e37e4c7b..478345c2674 100644 --- a/packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts +++ b/packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts @@ -56,7 +56,10 @@ export function writeConfigDefaults(configPath: string) { return; } - let configType = path.basename(configPath); + let configType = path.basename(configPath) as + | "jsconfig.json" + | "tsconfig.json"; + // sanity checks to make sure we can write the compilerOptions if (!fullConfig.compilerOptions) fullConfig.compilerOptions = {}; if (!config.compilerOptions) config.compilerOptions = {}; @@ -65,7 +68,11 @@ export function writeConfigDefaults(configPath: string) { let requiredChanges = []; if (!("include" in fullConfig)) { - config.include = ["remix.env.d.ts", "**/*.ts", "**/*.tsx"]; + if (configType === "jsconfig.json") { + config.include = ["**/*.js", "**/*.jsx"]; + } else { + config.include = ["remix.env.d.ts", "**/*.ts", "**/*.tsx"]; + } suggestedChanges.push( colors.blue("include") + " was set to " + From aed652e65c005cfe504e329c631fe50d7c57e88e Mon Sep 17 00:00:00 2001 From: Logan McAnsh Date: Thu, 11 Aug 2022 19:48:27 -0400 Subject: [PATCH 2/6] Update packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michaƫl De Boey --- .../compiler/utils/tsconfig/write-config-defaults.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts b/packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts index 478345c2674..08f4d2eba3f 100644 --- a/packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts +++ b/packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts @@ -68,11 +68,9 @@ export function writeConfigDefaults(configPath: string) { let requiredChanges = []; if (!("include" in fullConfig)) { - if (configType === "jsconfig.json") { - config.include = ["**/*.js", "**/*.jsx"]; - } else { - config.include = ["remix.env.d.ts", "**/*.ts", "**/*.tsx"]; - } + config.include = configType === "jsconfig.json" + ? ["**/*.js", "**/*.jsx"] + : ["remix.env.d.ts", "**/*.ts", "**/*.tsx"]; suggestedChanges.push( colors.blue("include") + " was set to " + From d9b14834aebd9af96e0cc75b1ba5fdaa3f44a987 Mon Sep 17 00:00:00 2001 From: Logan McAnsh Date: Fri, 12 Aug 2022 11:05:43 -0400 Subject: [PATCH 3/6] test if writing a jsconfig, delete the tsconfig at location Signed-off-by: Logan McAnsh (cherry picked from commit 23ea4314e6c100d7b93b0e297cc95e706e584126) --- integration/helpers/create-fixture.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/integration/helpers/create-fixture.ts b/integration/helpers/create-fixture.ts index 7080f6d8590..1325f7c595b 100644 --- a/integration/helpers/create-fixture.ts +++ b/integration/helpers/create-fixture.ts @@ -206,6 +206,12 @@ async function writeTestFiles(init: FixtureInit, dir: string) { let filePath = path.join(dir, filename); await fse.ensureDir(path.dirname(filePath)); let file = init.files![filename]; + // if we have a jsconfig we don't want the tsconfig to exist + if (filename.endsWith("jsconfig.json")) { + let parsed = path.parse(filePath); + await fse.remove(path.join(parsed.dir, "tsconfig.json")); + } + if (typeof file === "string") { await fse.writeFile(filePath, stripIndent(file)); } else { From 4b150d8e66ab3cd9d439965dc1fed5067be6a7c6 Mon Sep 17 00:00:00 2001 From: Logan McAnsh Date: Thu, 25 Aug 2022 11:41:41 -0400 Subject: [PATCH 4/6] chore: move tsconfig defaults check to readConfig Signed-off-by: Logan McAnsh --- .../remix-dev/compiler/plugins/serverBareModulesPlugin.ts | 2 +- packages/remix-dev/compiler/utils/tsconfig/index.ts | 4 ---- packages/remix-dev/config.ts | 5 +++++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/remix-dev/compiler/plugins/serverBareModulesPlugin.ts b/packages/remix-dev/compiler/plugins/serverBareModulesPlugin.ts index 73902695a47..177aa3c3c71 100644 --- a/packages/remix-dev/compiler/plugins/serverBareModulesPlugin.ts +++ b/packages/remix-dev/compiler/plugins/serverBareModulesPlugin.ts @@ -13,7 +13,7 @@ import { createMatchPath } from "../utils/tsconfig"; /** * A plugin responsible for resolving bare module ids based on server target. - * This includes externalizing for node based plaforms, and bundling for single file + * This includes externalizing for node based platforms, and bundling for single file * environments such as cloudflare. */ export function serverBareModulesPlugin( diff --git a/packages/remix-dev/compiler/utils/tsconfig/index.ts b/packages/remix-dev/compiler/utils/tsconfig/index.ts index 559a34e8800..0254cd3e0ab 100644 --- a/packages/remix-dev/compiler/utils/tsconfig/index.ts +++ b/packages/remix-dev/compiler/utils/tsconfig/index.ts @@ -1,7 +1,5 @@ import tsConfigPaths from "tsconfig-paths"; -import { writeConfigDefaults } from "./write-config-defaults"; - export function createMatchPath(tsconfigPath: string | undefined) { // There is no tsconfig to match paths against. if (!tsconfigPath) { @@ -22,8 +20,6 @@ export function createMatchPath(tsconfigPath: string | undefined) { return undefined; } - writeConfigDefaults(configLoaderResult.configFileAbsolutePath); - return tsConfigPaths.createMatchPath( configLoaderResult.absoluteBaseUrl, configLoaderResult.paths, diff --git a/packages/remix-dev/config.ts b/packages/remix-dev/config.ts index 39d87a89f29..0a6d3943eb7 100644 --- a/packages/remix-dev/config.ts +++ b/packages/remix-dev/config.ts @@ -8,6 +8,7 @@ import { defineRoutes } from "./config/routes"; import { defineConventionalRoutes } from "./config/routesConvention"; import { ServerMode, isValidServerMode } from "./config/serverModes"; import { serverBuildVirtualModule } from "./compiler/virtualModules"; +import { writeConfigDefaults } from "./compiler/utils/tsconfig/write-config-defaults"; export interface RemixMdxConfig { rehypePlugins?: any[]; @@ -467,6 +468,10 @@ export async function readConfig( tsconfigPath = rootJsConfig; } + if (tsconfigPath) { + writeConfigDefaults(tsconfigPath); + } + return { appDirectory, cacheDirectory, From e6164552739ad89e5f72b370becacf29fdfbe3f5 Mon Sep 17 00:00:00 2001 From: Logan McAnsh Date: Thu, 25 Aug 2022 12:48:17 -0400 Subject: [PATCH 5/6] chore: update log Signed-off-by: Logan McAnsh --- .../utils/tsconfig/write-config-defaults.ts | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts b/packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts index 08f4d2eba3f..b296ee19eef 100644 --- a/packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts +++ b/packages/remix-dev/compiler/utils/tsconfig/write-config-defaults.ts @@ -68,14 +68,21 @@ export function writeConfigDefaults(configPath: string) { let requiredChanges = []; if (!("include" in fullConfig)) { - config.include = configType === "jsconfig.json" - ? ["**/*.js", "**/*.jsx"] - : ["remix.env.d.ts", "**/*.ts", "**/*.tsx"]; - suggestedChanges.push( - colors.blue("include") + - " was set to " + - colors.bold(`['remix.env.d.ts', '**/*.ts', '**/*.tsx']`) - ); + if (configType === "jsconfig.json") { + config.include = ["**/*.js", "**/*.jsx"]; + suggestedChanges.push( + colors.blue("include") + + " was set to " + + colors.bold(`['**/*.js', '**/*.jsx']`) + ); + } else { + config.include = ["remix.env.d.ts", "**/*.ts", "**/*.tsx"]; + suggestedChanges.push( + colors.blue("include") + + " was set to " + + colors.bold(`['remix.env.d.ts', '**/*.ts', '**/*.tsx']`) + ); + } } // TODO: check for user's typescript version and only add baseUrl if < 4.1 if (!("baseUrl" in fullConfig.compilerOptions)) { From 259fc1bfd7d897e1c69538649c89975909f9f367 Mon Sep 17 00:00:00 2001 From: Logan McAnsh Date: Thu, 8 Sep 2022 12:12:13 -0400 Subject: [PATCH 6/6] test: update fixtures Signed-off-by: Logan McAnsh --- .../remix-dev/__tests__/fixtures/stack.tar.gz | Bin 33792 -> 34304 bytes .../__tests__/fixtures/stack/tsconfig.json | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/remix-dev/__tests__/fixtures/stack.tar.gz b/packages/remix-dev/__tests__/fixtures/stack.tar.gz index fb5b1924c690b2ce71e92dce655245bf00f25524..edde2637f01a8cd73f8c1f6883fd1a971bc0378c 100644 GIT binary patch delta 481 zcmZ9`K}!Nb7zW@*L&8f|f@^q~mK57cXJ*$~C;~|cDu@s|bg32{Ye9EocFiaPA&m}Q z+WiCJv6D3Cep|Uw>(ce(d!P61KgaqnvGFh^VI5*kMO4ECkqShZP>sSF0WtMc7G=Vs4Che4~hyv8y07P+JWG=&=`-3?ECN(8MkzBmF@R8J3JxnIxj=&yZ2_trjl)E( z*42R>_5)`$c6<+a0ApPSz*kP+_CmWjq(*gy=G%`_jTKB{nj!;dOwNf}GHVi&WJn}M zM{?3u+UdFShUSg?wFa^Hza+^7e{IxLl)mD36dy#2N&j>RPM6+?>nQ1H%~;!A4Q$uB zNqgD{n!-lhdZ<%t5zSvV4VLK%F08U7k9vA*-*HENFos*`=763ZT-yQM!DZmPfD0%- rmScTyQIHH-GyT#}DpS~rNu(IOoK;X#%xWw<=o$L)8nTz%YbLti%l2p+ diff --git a/packages/remix-dev/__tests__/fixtures/stack/tsconfig.json b/packages/remix-dev/__tests__/fixtures/stack/tsconfig.json index 20f8a386a6c..7d43861a8fa 100644 --- a/packages/remix-dev/__tests__/fixtures/stack/tsconfig.json +++ b/packages/remix-dev/__tests__/fixtures/stack/tsconfig.json @@ -1,6 +1,8 @@ { "include": ["remix.env.d.ts", "**/*.ts", "**/*.tsx"], "compilerOptions": { + "allowJs": true, + "forceConsistentCasingInFileNames": true, "lib": ["DOM", "DOM.Iterable", "ES2019"], "isolatedModules": true, "esModuleInterop": true, @@ -9,8 +11,6 @@ "resolveJsonModule": true, "target": "ES2019", "strict": true, - "allowJs": true, - "forceConsistentCasingInFileNames": true, "baseUrl": ".", "paths": { "~/*": ["./app/*"]