From 5da86c5a979c9b95fdaad8785da25dd78159d22a Mon Sep 17 00:00:00 2001 From: michael faith Date: Tue, 7 Jan 2025 22:07:21 -0600 Subject: [PATCH] build: update packages to use more modern moduleresolution options (#1770) * refactor: rename tsconfig.cjs.json to tsconfig.esm.json * build: update packages to use more modern moduleresolution options This change updates tsconfigs across all packages to use more up to date `module` and `moduleResolution` options. For all packages that were being built as `commonjs` modules with node `moduleResolution`, they've been updated to use `nodenext`. I also took the opportunity to re-organize the tsconfigs at the packages level to make their names more accurate. Previously the main `packages/tsconfig.json`, which is what the `build:esm` command targetted, referenced all package's tsconfigs, while a `packages/tsconfig.cjs.json` only referenced the cjs tsconfig from the react package. However, all packages' tsconfigs _except_ for the react tsconfig are building cjs. So having a command that's called `build:esm` run all cjs builds and one esm build didn't really do what the name would suggest. So I reversed that construct. Now `packages/tsconfig.json` still references all of the packages tsconfig, except for the react package, it references the `tsconfig.cjs`, and I renamed the `packages/tsconfig.cjs.json` to `packages/tsconfig.esm.json` and have it only referencing the main react package tsconfig. The net / net is that `build:esm` is only building esm output and `build:cjs` is only building cjs output. Similarly, all package level tsconfigs are inheriting from packages/tsconfig.options.json, but that config had module and moduleResolution corresponding to the tsconfig in react (the ESM one), and all of the other package tsconfigs were overriding the module and moduleResolution. So I swapped that, so that the base config has the module and moduleResolution that all but on of the packages are using, and had the react tsconfig override that to what it needed to be for esm output. This means fewer tsconfigs are needing to override those options. Lastly, I've done build comparisons for all packages and target, and they all result in the same build output as they did before these changes. --- package.json | 4 ++-- packages/babel-plugin-strip-runtime/tsconfig.json | 3 +-- packages/babel-plugin/tsconfig.json | 5 ++--- packages/benchmark/tsconfig.json | 5 ++--- packages/codemods/tsconfig.json | 3 +-- packages/css/tsconfig.json | 3 +-- packages/eslint-plugin/tsconfig.json | 2 -- packages/jest/tsconfig.json | 3 +-- packages/parcel-optimizer/tsconfig.json | 1 - packages/parcel-transformer-external/tsconfig.json | 1 - packages/parcel-transformer/tsconfig.json | 1 - packages/react/tsconfig.browser.json | 2 ++ packages/react/tsconfig.cjs.json | 1 - packages/react/tsconfig.json | 2 ++ packages/tsconfig.cjs.json | 4 ---- packages/tsconfig.esm.json | 4 ++++ packages/tsconfig.json | 2 +- packages/tsconfig.options.json | 4 ++-- packages/utils/tsconfig.json | 3 +-- packages/webpack-loader/tsconfig.json | 2 +- 20 files changed, 23 insertions(+), 32 deletions(-) delete mode 100644 packages/tsconfig.cjs.json create mode 100644 packages/tsconfig.esm.json diff --git a/package.json b/package.json index a062f22fe..9f8253a04 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ "postbuild": "scripts/postbuild.sh", "build:babel-fixture": "yarn workspace @compiled/babel-component-fixture build && yarn workspace @compiled/babel-component-extracted-fixture build", "build:browser": "ttsc --build packages/tsconfig.browser.json", - "build:cjs": "ttsc --build packages/tsconfig.cjs.json", - "build:esm": "ttsc --build packages/tsconfig.json", + "build:cjs": "ttsc --build packages/tsconfig.json", + "build:esm": "ttsc --build packages/tsconfig.esm.json", "build:inspect": "node --inspect-brk node_modules/typescript/lib/tsc.js --build packages", "build:parcel": "ttsc --build examples/parcel/tsconfig.json && yarn workspace @compiled/parcel-app build", "build:ssr": "CI=false && ttsc --build examples/ssr/tsconfig.json && yarn workspace @compiled/ssr-app build", diff --git a/packages/babel-plugin-strip-runtime/tsconfig.json b/packages/babel-plugin-strip-runtime/tsconfig.json index ac86f5a56..bd51e4a00 100644 --- a/packages/babel-plugin-strip-runtime/tsconfig.json +++ b/packages/babel-plugin-strip-runtime/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../tsconfig.options.json", "compilerOptions": { "rootDir": "src", - "outDir": "dist", - "module": "commonjs" + "outDir": "dist" }, "references": [{ "path": "../babel-plugin" }, { "path": "../css" }] } diff --git a/packages/babel-plugin/tsconfig.json b/packages/babel-plugin/tsconfig.json index f10530ddf..2bbc74a2f 100644 --- a/packages/babel-plugin/tsconfig.json +++ b/packages/babel-plugin/tsconfig.json @@ -1,9 +1,8 @@ { "extends": "../tsconfig.options.json", "compilerOptions": { - "module": "commonjs", - "outDir": "dist", - "rootDir": "src" + "rootDir": "src", + "outDir": "dist" }, "references": [{ "path": "../benchmark" }, { "path": "../css" }, { "path": "../utils" }] } diff --git a/packages/benchmark/tsconfig.json b/packages/benchmark/tsconfig.json index d41c40b7e..b8a10cbb2 100644 --- a/packages/benchmark/tsconfig.json +++ b/packages/benchmark/tsconfig.json @@ -1,9 +1,8 @@ { "extends": "../tsconfig.options.json", "compilerOptions": { - "module": "commonjs", - "outDir": "dist", - "rootDir": "src" + "rootDir": "src", + "outDir": "dist" }, "references": [{ "path": "../jest" }] } diff --git a/packages/codemods/tsconfig.json b/packages/codemods/tsconfig.json index bb8345b18..fbc8c3d23 100644 --- a/packages/codemods/tsconfig.json +++ b/packages/codemods/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../tsconfig.options.json", "compilerOptions": { "rootDir": "src", - "outDir": "dist", - "module": "commonjs" + "outDir": "dist" }, "references": [{ "path": "../jest" }, { "path": "../utils" }] } diff --git a/packages/css/tsconfig.json b/packages/css/tsconfig.json index 8e45b2db0..a99b9c4ff 100644 --- a/packages/css/tsconfig.json +++ b/packages/css/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../tsconfig.options.json", "compilerOptions": { "rootDir": "src", - "outDir": "dist", - "module": "commonjs" + "outDir": "dist" }, "references": [{ "path": "../utils" }] } diff --git a/packages/eslint-plugin/tsconfig.json b/packages/eslint-plugin/tsconfig.json index a0ae6a8d7..a12d9cef3 100644 --- a/packages/eslint-plugin/tsconfig.json +++ b/packages/eslint-plugin/tsconfig.json @@ -3,8 +3,6 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "module": "nodenext", - "moduleResolution": "nodenext", "target": "es2017", "plugins": [ { diff --git a/packages/jest/tsconfig.json b/packages/jest/tsconfig.json index f34df188f..301c98109 100644 --- a/packages/jest/tsconfig.json +++ b/packages/jest/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../tsconfig.options.json", "compilerOptions": { "rootDir": "src", - "outDir": "dist", - "module": "commonjs" + "outDir": "dist" }, "references": [] } diff --git a/packages/parcel-optimizer/tsconfig.json b/packages/parcel-optimizer/tsconfig.json index 871a59708..20e970245 100644 --- a/packages/parcel-optimizer/tsconfig.json +++ b/packages/parcel-optimizer/tsconfig.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "module": "commonjs", "target": "es2017" }, "references": [{ "path": "../css" }, { "path": "../jest" }] diff --git a/packages/parcel-transformer-external/tsconfig.json b/packages/parcel-transformer-external/tsconfig.json index 5dfd598b7..2a337ce37 100644 --- a/packages/parcel-transformer-external/tsconfig.json +++ b/packages/parcel-transformer-external/tsconfig.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "module": "commonjs", "target": "es2017" }, "references": [{ "path": "../jest" }] diff --git a/packages/parcel-transformer/tsconfig.json b/packages/parcel-transformer/tsconfig.json index a72e28e5b..70077c7ac 100644 --- a/packages/parcel-transformer/tsconfig.json +++ b/packages/parcel-transformer/tsconfig.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "module": "commonjs", "target": "es2017" }, "references": [ diff --git a/packages/react/tsconfig.browser.json b/packages/react/tsconfig.browser.json index 025524657..03d7d45b3 100644 --- a/packages/react/tsconfig.browser.json +++ b/packages/react/tsconfig.browser.json @@ -2,6 +2,8 @@ "extends": "./tsconfig.options.json", "compilerOptions": { "outDir": "dist/browser", + "module": "es6", + "moduleResolution": "node", "plugins": [ { "transform": "ts-transform-define", diff --git a/packages/react/tsconfig.cjs.json b/packages/react/tsconfig.cjs.json index 14f9205a2..0491acb44 100644 --- a/packages/react/tsconfig.cjs.json +++ b/packages/react/tsconfig.cjs.json @@ -1,7 +1,6 @@ { "extends": "./tsconfig.options.json", "compilerOptions": { - "module": "commonjs", "outDir": "dist/cjs", "tsBuildInfoFile": "tsconfig.cjs.tsbuildinfo" }, diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json index 1e6fb63ca..c91ec586d 100644 --- a/packages/react/tsconfig.json +++ b/packages/react/tsconfig.json @@ -2,6 +2,8 @@ "extends": "./tsconfig.options.json", "compilerOptions": { "outDir": "dist/esm", + "module": "es6", + "moduleResolution": "node", "tsBuildInfoFile": "tsconfig.esm.tsbuildinfo" }, "references": [{ "path": "../benchmark" }, { "path": "../jest" }, { "path": "../utils" }] diff --git a/packages/tsconfig.cjs.json b/packages/tsconfig.cjs.json deleted file mode 100644 index 18af30350..000000000 --- a/packages/tsconfig.cjs.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "files": [], - "references": [{ "path": "react/tsconfig.cjs.json" }] -} diff --git a/packages/tsconfig.esm.json b/packages/tsconfig.esm.json new file mode 100644 index 000000000..4e8984d18 --- /dev/null +++ b/packages/tsconfig.esm.json @@ -0,0 +1,4 @@ +{ + "files": [], + "references": [{ "path": "react/tsconfig.json" }] +} diff --git a/packages/tsconfig.json b/packages/tsconfig.json index 5ecc0b10b..37b840c77 100644 --- a/packages/tsconfig.json +++ b/packages/tsconfig.json @@ -11,7 +11,7 @@ { "path": "parcel-optimizer/tsconfig.json" }, { "path": "parcel-transformer/tsconfig.json" }, { "path": "parcel-transformer-external/tsconfig.json" }, - { "path": "react/tsconfig.json" }, + { "path": "react/tsconfig.cjs.json" }, { "path": "utils/tsconfig.json" }, { "path": "webpack-loader/tsconfig.json" } ] diff --git a/packages/tsconfig.options.json b/packages/tsconfig.options.json index 2fac2c42c..7eda7c6af 100644 --- a/packages/tsconfig.options.json +++ b/packages/tsconfig.options.json @@ -7,8 +7,8 @@ "forceConsistentCasingInFileNames": true, "jsx": "react", "lib": ["dom", "es2016", "es2017.object"], - "module": "es6", - "moduleResolution": "node", + "module": "nodenext", + "moduleResolution": "nodenext", "noImplicitReturns": true, "noImplicitThis": true, "noUnusedLocals": true, diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index 7072d0ee7..b8a10cbb2 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../tsconfig.options.json", "compilerOptions": { "rootDir": "src", - "outDir": "dist", - "module": "commonjs" + "outDir": "dist" }, "references": [{ "path": "../jest" }] } diff --git a/packages/webpack-loader/tsconfig.json b/packages/webpack-loader/tsconfig.json index 80449a945..dda2641c6 100644 --- a/packages/webpack-loader/tsconfig.json +++ b/packages/webpack-loader/tsconfig.json @@ -3,9 +3,9 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "module": "commonjs", "target": "es2017" }, + "exclude": ["src/__fixtures__"], "references": [ { "path": "../babel-plugin" }, { "path": "../babel-plugin-strip-runtime" },