From 8b2fda720af71df6519fb72025b3b2883deee467 Mon Sep 17 00:00:00 2001 From: Kevin Ingersoll Date: Wed, 16 Oct 2024 12:25:06 +0100 Subject: [PATCH] build: improve tsup config for turbo (#3293) --- package.json | 3 ++- packages/abi-ts/tsup.config.ts | 13 +++++++++---- packages/block-logs-stream/tsup.config.ts | 13 +++++++++---- packages/cli/tsup.config.ts | 13 +++++++++---- packages/common/tsup.config.ts | 13 +++++++++---- packages/config/tsup.config.ts | 13 +++++++++---- packages/create-mud/tsup.config.ts | 11 +++++++++-- packages/dev-tools/tsup.config.ts | 13 +++++++++---- packages/explorer/tsup.config.ts | 13 +++++++++---- packages/faucet/tsup.config.ts | 13 +++++++++---- packages/gas-report/tsup.config.ts | 13 +++++++++---- packages/protocol-parser/tsup.config.ts | 13 +++++++++---- packages/react/tsup.config.ts | 13 +++++++++---- packages/recs/tsup.config.ts | 13 +++++++++---- packages/schema-type/tsup.config.ts | 13 +++++++++---- packages/solhint-config-mud/tsup.config.ts | 13 +++++++++---- packages/solhint-plugin-mud/tsup.config.ts | 13 +++++++++---- packages/stash/tsup.config.ts | 13 +++++++++---- packages/store-indexer/tsup.config.ts | 13 +++++++++---- packages/store-sync/tsup.config.ts | 13 +++++++++---- packages/store/tsup.config.ts | 13 +++++++++---- packages/utils/tsup.config.ts | 13 +++++++++---- packages/world-module-metadata/tsup.config.ts | 13 +++++++++---- packages/world-modules/tsup.config.ts | 13 +++++++++---- packages/world/tsup.config.ts | 13 +++++++++---- 25 files changed, 218 insertions(+), 95 deletions(-) diff --git a/package.json b/package.json index b1f36e8990..6241eb83cc 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,5 @@ { + "name": "mud-monorepo", "private": true, "repository": { "type": "git", @@ -12,7 +13,7 @@ "build": "turbo run build --concurrency=100%", "changelog:generate": "tsx scripts/changelog.ts", "clean": "turbo run clean --concurrency=100%", - "dev": "TSUP_SKIP_DTS=true turbo run dev --concurrency=100% --filter !@latticexyz/explorer", + "dev": "turbo run dev --concurrency=999", "dist-tag-rm": "pnpm recursive exec -- sh -c 'npm dist-tag rm $(cat package.json | jq -r \".name\") $TAG || true'", "docs:generate:api": "tsx scripts/render-api-docs.ts", "fix:package-json": "sort-package-json package.json 'packages/*/package.json' 'templates/*/package.json' 'templates/*/packages/*/package.json' 'examples/*/package.json' 'examples/*/packages/*/package.json' 'e2e/*/package.json' 'e2e/*/packages/*/package.json' 'docs/package.json' 'test/*/package.json'", diff --git a/packages/abi-ts/tsup.config.ts b/packages/abi-ts/tsup.config.ts index 17e4b13a46..090fe8db6f 100644 --- a/packages/abi-ts/tsup.config.ts +++ b/packages/abi-ts/tsup.config.ts @@ -1,11 +1,16 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: ["src/index.ts", "src/abi-ts.ts"], target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/block-logs-stream/tsup.config.ts b/packages/block-logs-stream/tsup.config.ts index 86fe9a5339..aaaddb4b65 100644 --- a/packages/block-logs-stream/tsup.config.ts +++ b/packages/block-logs-stream/tsup.config.ts @@ -1,11 +1,16 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: ["src/index.ts"], target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/cli/tsup.config.ts b/packages/cli/tsup.config.ts index 3c4776d5a3..9d7d80827a 100644 --- a/packages/cli/tsup.config.ts +++ b/packages/cli/tsup.config.ts @@ -17,15 +17,20 @@ const mudPackages: MudPackages = Object.fromEntries( .map(([localPath, packageJson]) => [packageJson.name, { localPath }]), ); -export default defineConfig({ +export default defineConfig((opts) => ({ entry: ["src/index.ts", "src/mud.ts"], target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, env: { MUD_PACKAGES: JSON.stringify(mudPackages), }, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/common/tsup.config.ts b/packages/common/tsup.config.ts index 04177d900b..2ea1df785a 100644 --- a/packages/common/tsup.config.ts +++ b/packages/common/tsup.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: { index: "src/index.ts", actions: "src/actions/index.ts", @@ -14,8 +14,13 @@ export default defineConfig({ }, target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/config/tsup.config.ts b/packages/config/tsup.config.ts index 03d33f1d21..787c6581ac 100644 --- a/packages/config/tsup.config.ts +++ b/packages/config/tsup.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: { index: "src/exports/index.ts", internal: "src/exports/internal.ts", @@ -8,8 +8,13 @@ export default defineConfig({ }, target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/create-mud/tsup.config.ts b/packages/create-mud/tsup.config.ts index ab4029fce6..71f00bd613 100644 --- a/packages/create-mud/tsup.config.ts +++ b/packages/create-mud/tsup.config.ts @@ -1,7 +1,14 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: ["src/cli.ts"], minify: true, sourcemap: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/dev-tools/tsup.config.ts b/packages/dev-tools/tsup.config.ts index 315c0c9fb7..b70d7c190f 100644 --- a/packages/dev-tools/tsup.config.ts +++ b/packages/dev-tools/tsup.config.ts @@ -12,17 +12,22 @@ import packageJson from "./package.json"; const peerDeps = Object.keys(packageJson.peerDependencies); const bundledDeps = Object.keys(packageJson.dependencies).filter((dep) => !peerDeps.includes(dep)); -export default defineConfig({ +export default defineConfig((opts) => ({ entry: ["src/index.ts"], target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, injectStyle: true, // bundle all non-peer deps noExternal: bundledDeps, // don't code split otherwise dep imports in bundle seem to break splitting: false, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/explorer/tsup.config.ts b/packages/explorer/tsup.config.ts index 5a229b1e41..88ca1c4ba1 100644 --- a/packages/explorer/tsup.config.ts +++ b/packages/explorer/tsup.config.ts @@ -1,12 +1,17 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ tsconfig: "tsconfig.tsup.json", entry: ["src/bin/explorer.ts", "src/exports/observer.ts"], target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: false, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/faucet/tsup.config.ts b/packages/faucet/tsup.config.ts index 9fd1990d5f..ff4fa8454b 100644 --- a/packages/faucet/tsup.config.ts +++ b/packages/faucet/tsup.config.ts @@ -1,11 +1,16 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: ["src/index.ts", "bin/faucet-server.ts"], target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/gas-report/tsup.config.ts b/packages/gas-report/tsup.config.ts index 9249f040b1..9af3b2af9a 100644 --- a/packages/gas-report/tsup.config.ts +++ b/packages/gas-report/tsup.config.ts @@ -1,11 +1,16 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: ["ts/index.ts", "ts/gas-report.ts"], target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/protocol-parser/tsup.config.ts b/packages/protocol-parser/tsup.config.ts index 709f21cd88..83042e6610 100644 --- a/packages/protocol-parser/tsup.config.ts +++ b/packages/protocol-parser/tsup.config.ts @@ -1,14 +1,19 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: { index: "src/exports/index.ts", internal: "src/exports/internal.ts", }, target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/react/tsup.config.ts b/packages/react/tsup.config.ts index 86fe9a5339..aaaddb4b65 100644 --- a/packages/react/tsup.config.ts +++ b/packages/react/tsup.config.ts @@ -1,11 +1,16 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: ["src/index.ts"], target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/recs/tsup.config.ts b/packages/recs/tsup.config.ts index 7bd5468d6d..6043a2f8b8 100644 --- a/packages/recs/tsup.config.ts +++ b/packages/recs/tsup.config.ts @@ -1,11 +1,16 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: ["src/index.ts", "src/deprecated/index.ts"], target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/schema-type/tsup.config.ts b/packages/schema-type/tsup.config.ts index 785c99b7cc..438778ca20 100644 --- a/packages/schema-type/tsup.config.ts +++ b/packages/schema-type/tsup.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: { index: "src/typescript/exports/index.ts", internal: "src/typescript/exports/internal.ts", @@ -9,9 +9,14 @@ export default defineConfig({ outDir: "dist", target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, injectStyle: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/solhint-config-mud/tsup.config.ts b/packages/solhint-config-mud/tsup.config.ts index 35ed4525fe..77ce5a3131 100644 --- a/packages/solhint-config-mud/tsup.config.ts +++ b/packages/solhint-config-mud/tsup.config.ts @@ -1,11 +1,16 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: ["src/index.ts"], target: "esnext", format: ["cjs"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/solhint-plugin-mud/tsup.config.ts b/packages/solhint-plugin-mud/tsup.config.ts index 35ed4525fe..77ce5a3131 100644 --- a/packages/solhint-plugin-mud/tsup.config.ts +++ b/packages/solhint-plugin-mud/tsup.config.ts @@ -1,11 +1,16 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: ["src/index.ts"], target: "esnext", format: ["cjs"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/stash/tsup.config.ts b/packages/stash/tsup.config.ts index 709f21cd88..83042e6610 100644 --- a/packages/stash/tsup.config.ts +++ b/packages/stash/tsup.config.ts @@ -1,14 +1,19 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: { index: "src/exports/index.ts", internal: "src/exports/internal.ts", }, target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/store-indexer/tsup.config.ts b/packages/store-indexer/tsup.config.ts index 9b3595745c..bd0464e7fc 100644 --- a/packages/store-indexer/tsup.config.ts +++ b/packages/store-indexer/tsup.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: [ "src/index.ts", "bin/postgres-frontend.ts", @@ -10,8 +10,13 @@ export default defineConfig({ ], target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/store-sync/tsup.config.ts b/packages/store-sync/tsup.config.ts index 87fbf6d134..1fb070d548 100644 --- a/packages/store-sync/tsup.config.ts +++ b/packages/store-sync/tsup.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: [ "src/index.ts", "src/sqlite/index.ts", @@ -14,8 +14,13 @@ export default defineConfig({ ], target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/store/tsup.config.ts b/packages/store/tsup.config.ts index c6bf94213d..89cc1bc654 100644 --- a/packages/store/tsup.config.ts +++ b/packages/store/tsup.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: { "mud.config": "mud.config.ts", index: "ts/exports/index.ts", @@ -10,8 +10,13 @@ export default defineConfig({ }, target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/utils/tsup.config.ts b/packages/utils/tsup.config.ts index 86fe9a5339..aaaddb4b65 100644 --- a/packages/utils/tsup.config.ts +++ b/packages/utils/tsup.config.ts @@ -1,11 +1,16 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: ["src/index.ts"], target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/world-module-metadata/tsup.config.ts b/packages/world-module-metadata/tsup.config.ts index a89281f3d6..1636dcc6c3 100644 --- a/packages/world-module-metadata/tsup.config.ts +++ b/packages/world-module-metadata/tsup.config.ts @@ -1,13 +1,18 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: { "mud.config": "mud.config.ts", }, target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/world-modules/tsup.config.ts b/packages/world-modules/tsup.config.ts index a89281f3d6..1636dcc6c3 100644 --- a/packages/world-modules/tsup.config.ts +++ b/packages/world-modules/tsup.config.ts @@ -1,13 +1,18 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: { "mud.config": "mud.config.ts", }, target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +})); diff --git a/packages/world/tsup.config.ts b/packages/world/tsup.config.ts index 6091e66f71..5365dc4714 100644 --- a/packages/world/tsup.config.ts +++ b/packages/world/tsup.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "tsup"; -export default defineConfig({ +export default defineConfig((opts) => ({ entry: { "mud.config": "mud.config.ts", index: "ts/exports/index.ts", @@ -10,8 +10,13 @@ export default defineConfig({ }, target: "esnext", format: ["esm"], - dts: !process.env.TSUP_SKIP_DTS, sourcemap: true, - clean: true, minify: true, -}); + // don't generate DTS during watch mode because it's slow + // we're likely using TS source in this mode anyway + dts: !opts.watch, + // don't clean during watch mode to avoid removing + // previously-built DTS files, which other build tasks + // depend on + clean: !opts.watch, +}));