Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs/release-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,14 @@ flowchart LR
#2959 bumped an `apps/docs` dependency and cut 1.0.4.
- A **`workflow_dispatch` run always publishes.** That is the escape hatch
when a docs-only change has to go out as a release anyway.
- **Tests and stories stay out of `dist/types`.** Every release build shares
`publishedDtsOptions` from `packages/core`, whose `exclude` keeps
`*.stories.*`, `*.test.*`, `src/tests/**` and `e2e/**` out of the declaration
emit; before that, 196 of `@mittwald/flow-remote-react-components@1.1.10`'s
799 tarball entries were `dist/types/tests/**`, and no `exports` path reached
them. A story's helper still ships (`Button/stories/lib.tsx`), because
`dev/createDocPropertiesJson.ts` parses every `.tsx` under `src/` and ignores
only `*.stories.tsx`.
- **The build runs after the version bump.** Both publish workflows version
first, then `pnpm build`, then publish. Some bundles bake their own version in
at build time (vite `define` over `package.json` — `remote-react-components`'
Expand Down
7 changes: 2 additions & 5 deletions packages/components/vite.build.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { defineConfig, mergeConfig } from "vite";
import { flowComponentsLayerPlugin } from "./dev/vite/flowComponentsLayerPlugin.ts";
import { layerOrderPlugin } from "./dev/vite/layerOrderPlugin.ts";
import { stylesheetVariantsPlugin } from "./dev/vite/stylesheetVariantsPlugin.ts";
import { preserveUseClientBanner } from "../core";
import { preserveUseClientBanner, publishedDtsOptions } from "../core";

export default mergeConfig(
baseConfig,
Expand Down Expand Up @@ -65,10 +65,7 @@ export default mergeConfig(
externalizeDeps({
except: ["@mittwald/flow-design-tokens/**/*", "@mittwald/flow-core"],
}),
dts({
include: ["src"],
outDirs: "dist/types",
}),
dts(publishedDtsOptions),
],
}),
);
1 change: 1 addition & 0 deletions packages/core/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * from "./preserveUseClientBanner";
export * from "./publishedDtsOptions";
export * from "./vitestBrowserTestConfig";
37 changes: 37 additions & 0 deletions packages/core/src/publishedDtsOptions.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/**
* The `unplugin-dts` options every package's release build shares.
*
* `include: ["src"]` alone emits declarations for ALL of `src` — stories and
* tests with it. Those are dead files: no `exports` path reaches them, nothing
* imports them, and they made up 196 of the 799 entries in
* `@mittwald/flow-remote-react-components@1.1.10` (#3023). `exclude` keeps them
* out, which also lets the release-relevance guard skip a test-only change
* honestly instead of arguing about tarball membership
* (`.github/scripts/release-relevance-lib.mjs`).
*
* The globs match story and test FILES, not the directories around them. A
* helper beside a story stays: `dev/createDocPropertiesJson.ts` parses every
* `.tsx` under `src/` and ignores only `*.stories.tsx`, so
* `components/Button/stories/lib.tsx` really does contribute to the published
* `dist/assets/doc-properties.json` — five of its entries. Keep this list and
* the guard's denylist in step; they answer the same question.
*
* The globs cannot move into the shared tsconfig preset instead: its `exclude`
* governs `tsc --noEmit` too, and dropping tests from `test:compile` would stop
* type-checking the largest surface in the repository.
*
* `exclude` REPLACES the tsconfig's own list rather than extending it, so
* `node_modules` and `dist` are repeated here.
*/
export const publishedDtsOptions = {
include: ["src"],
exclude: [
"node_modules/**",
"dist/**",
"**/tests/**",
"**/e2e/**",
"**/*.stories.*",
"**/*.test.*",
],
outDirs: "dist/types",
};
1 change: 1 addition & 0 deletions packages/ext-bridge/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"zod": "^4.4.3"
},
"devDependencies": {
"@mittwald/flow-core": "workspace:*",
"@mittwald/typescript-config": "workspace:*",
"@types/node": "^25.9.3",
"@types/react": "^19.2",
Expand Down
6 changes: 2 additions & 4 deletions packages/ext-bridge/vite.build.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,15 @@ import { defineConfig, mergeConfig } from "vite";
import dts from "unplugin-dts/vite";
import { externalizeDeps } from "vite-plugin-externalize-deps";
import baseConfig from "./vite.config";
import { publishedDtsOptions } from "../core";

export default mergeConfig(
baseConfig,
defineConfig({
plugins: [
preserveDirectives(),
externalizeDeps(),
dts({
include: ["src"],
outDirs: "dist/types",
}),
dts(publishedDtsOptions),
],
build: {
minify: false,
Expand Down
7 changes: 2 additions & 5 deletions packages/mstudio-ext-react-components/vite.build.config.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import preserveDirectives from "rollup-preserve-directives";
import { defineConfig, mergeConfig } from "vite";
import dts from "unplugin-dts/vite";
import { preserveUseClientBanner } from "../core";
import { preserveUseClientBanner, publishedDtsOptions } from "../core";
import { externalizeDeps } from "vite-plugin-externalize-deps";
import baseConfig from "./vite.config";

Expand Down Expand Up @@ -32,10 +32,7 @@ export default mergeConfig(
plugins: [
preserveDirectives(),
externalizeDeps(),
dts({
include: ["src"],
outDirs: "dist/types",
}),
dts(publishedDtsOptions),
],
}),
);
10 changes: 2 additions & 8 deletions packages/react-tunnel/vite.build.config.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,12 @@
import { defineConfig, mergeConfig } from "vite";
import { preserveUseClientBanner } from "../core";
import { preserveUseClientBanner, publishedDtsOptions } from "../core";
import dts from "unplugin-dts/vite";
import baseConfig from "./vite.config";
import { externalizeDeps } from "vite-plugin-externalize-deps";

export default defineConfig(
mergeConfig(baseConfig, {
plugins: [
externalizeDeps(),
dts({
include: ["src"],
outDirs: "dist/types",
}),
],
plugins: [externalizeDeps(), dts(publishedDtsOptions)],
build: {
emptyOutDir: false,
lib: {
Expand Down
1 change: 1 addition & 0 deletions packages/remote-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
},
"devDependencies": {
"@mittwald/ext-bridge": "workspace:*",
"@mittwald/flow-core": "workspace:*",
"@mittwald/flow-react-components": "workspace:*",
"@mittwald/typescript-config": "workspace:*",
"@types/node": "^25.9.3",
Expand Down
6 changes: 2 additions & 4 deletions packages/remote-core/vite.build.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { defineConfig, mergeConfig } from "vite";
import dts from "unplugin-dts/vite";
import { externalizeDeps } from "vite-plugin-externalize-deps";
import baseConfig from "./vite.config";
import { publishedDtsOptions } from "../core";

export default mergeConfig(
baseConfig,
Expand All @@ -12,10 +13,7 @@ export default mergeConfig(
externalizeDeps({
except: ["@quilted/threads"],
}),
dts({
include: ["src"],
outDirs: "dist/types",
}),
dts(publishedDtsOptions),
],

build: {
Expand Down
1 change: 1 addition & 0 deletions packages/remote-elements/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"type-fest": "^5.7.0"
},
"devDependencies": {
"@mittwald/flow-core": "workspace:*",
"@mittwald/flow-react-components": "workspace:*",
"@mittwald/typescript-config": "workspace:*",
"@types/node": "^25.9.3",
Expand Down
6 changes: 2 additions & 4 deletions packages/remote-elements/vite.build.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,15 @@ import { defineConfig, mergeConfig } from "vite";
import dts from "unplugin-dts/vite";
import { externalizeDeps } from "vite-plugin-externalize-deps";
import baseConfig from "./vite.config";
import { publishedDtsOptions } from "../core";

export default mergeConfig(
baseConfig,
defineConfig({
plugins: [
preserveDirectives(),
externalizeDeps(),
dts({
include: ["src"],
outDirs: "dist/types",
}),
dts(publishedDtsOptions),
],
build: {
minify: false,
Expand Down
11 changes: 2 additions & 9 deletions packages/remote-react-components/vite.build.config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import preserveDirectives from "rollup-preserve-directives";
import { mergeConfig } from "vite";
import { preserveUseClientBanner } from "../core";
import { preserveUseClientBanner, publishedDtsOptions } from "../core";
import dts from "unplugin-dts/vite";
import { externalizeDeps } from "vite-plugin-externalize-deps";
import baseConfig from "./vite.config";
Expand Down Expand Up @@ -29,12 +29,5 @@ export default mergeConfig(baseConfig, {
},
},
},
plugins: [
preserveDirectives(),
externalizeDeps(),
dts({
include: ["src"],
outDirs: "dist/types",
}),
],
plugins: [preserveDirectives(), externalizeDeps(), dts(publishedDtsOptions)],
});
7 changes: 2 additions & 5 deletions packages/remote-react-renderer/vite.build.config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import preserveDirectives from "rollup-preserve-directives";
import { defineConfig, mergeConfig } from "vite";
import { preserveUseClientBanner } from "../core";
import { preserveUseClientBanner, publishedDtsOptions } from "../core";
import dts from "unplugin-dts/vite";
import { externalizeDeps } from "vite-plugin-externalize-deps";
import baseConfig from "./vite.config";
Expand All @@ -13,10 +13,7 @@ export default mergeConfig(
externalizeDeps({
except: [/^@mittwald\/remote-dom-react(?:\/.+)?$/],
}),
dts({
include: ["src"],
outDirs: "dist/types",
}),
dts(publishedDtsOptions),
],
build: {
minify: false,
Expand Down
9 changes: 9 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading