chore(build): quiet tsdown size reports in local dev (#1569)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Sam Potts
2026-05-20 11:38:26 +10:00
committed by GitHub
co-authored by Cursor
parent 5f1c2370fa
commit 1a3911151a
11 changed files with 79 additions and 130 deletions
+43
View File
@@ -0,0 +1,43 @@
/** `dev` and `default` outputs consumed by package `exports` conditions. */
export type PackageBuildMode = 'dev' | 'default';
export const packageBuildModes: PackageBuildMode[] = ['dev', 'default'];
/** Applied to every tsdown config in the monorepo. */
export const baseConfig = {
report: process.env.CI === 'true',
} as const;
/** Shared options for packages that emit `dist/dev` and `dist/default`. */
export function packageBuildConfig(mode: PackageBuildMode, platform: 'browser' | 'neutral' = 'neutral') {
return {
...baseConfig,
platform,
format: 'es' as const,
sourcemap: true,
clean: true,
hash: false,
unbundle: true,
outDir: `dist/${mode}`,
define: {
__DEV__: mode === 'dev' ? 'true' : 'false',
},
dts: mode === 'dev' ? ({ tsgo: true, tsconfig: 'tsconfig.dts.json' } as const) : (false as const),
};
}
export function isDevBuildMode(mode: PackageBuildMode): boolean {
return mode === 'dev';
}
/** Single-output packages (e.g. `@videojs/utils`) without dev/default splits. */
export const neutralLibraryConfig = {
...baseConfig,
platform: 'neutral' as const,
format: 'es' as const,
sourcemap: true,
clean: true,
hash: false,
unbundle: true,
dts: { tsgo: true, tsconfig: 'tsconfig.dts.json' } as const,
};
+2
View File
@@ -2,11 +2,13 @@ import { readFileSync } from 'node:fs';
import { dirname, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
import { defineConfig } from 'tsdown';
import { baseConfig } from '../../build/tsdown.ts';
const __dirname = dirname(fileURLToPath(import.meta.url));
const pkg = JSON.parse(readFileSync(resolve(__dirname, 'package.json'), 'utf-8'));
export default defineConfig({
...baseConfig,
entry: { index: './src/index.ts' },
platform: 'node',
format: 'es',
+4 -20
View File
@@ -1,12 +1,10 @@
import type { UserConfig } from 'tsdown';
import { defineConfig } from 'tsdown';
import { type PackageBuildMode, packageBuildConfig, packageBuildModes } from '../../build/tsdown.ts';
import packageJson from './package.json' with { type: 'json' };
type BuildMode = 'dev' | 'default';
const buildModes: BuildMode[] = ['dev', 'default'];
const createConfig = (mode: BuildMode): UserConfig => ({
const createConfig = (mode: PackageBuildMode): UserConfig => ({
...packageBuildConfig(mode, 'neutral'),
entry: {
index: './src/core/index.ts',
dom: './src/dom/index.ts',
@@ -17,24 +15,10 @@ const createConfig = (mode: BuildMode): UserConfig => ({
'dom/media/native-hls/index': './src/dom/media/native-hls/index.ts',
'dom/media/simple-hls/index': './src/dom/media/simple-hls/index.ts',
},
platform: 'neutral',
format: 'es',
sourcemap: true,
clean: true,
hash: false,
unbundle: true,
outDir: `dist/${mode}`,
define: {
__DEV__: mode === 'dev' ? 'true' : 'false',
__PLAYER_VERSION__: JSON.stringify(packageJson.version),
},
dts:
mode === 'dev'
? {
tsgo: true,
tsconfig: 'tsconfig.dts.json',
}
: false,
});
export default defineConfig(buildModes.map((mode) => createConfig(mode)));
export default defineConfig(packageBuildModes.map((mode) => createConfig(mode)));
+4 -17
View File
@@ -1,26 +1,13 @@
import type { UserConfig } from 'tsdown';
import { defineConfig } from 'tsdown';
import { type PackageBuildMode, packageBuildConfig, packageBuildModes } from '../../build/tsdown.ts';
type BuildMode = 'dev' | 'default';
const buildModes: BuildMode[] = ['dev', 'default'];
const createConfig = (mode: BuildMode): UserConfig => ({
const createConfig = (mode: PackageBuildMode): UserConfig => ({
...packageBuildConfig(mode, 'browser'),
entry: {
index: './src/index.ts',
context: './src/context.ts',
},
platform: 'browser',
format: 'es',
sourcemap: true,
clean: true,
hash: false,
unbundle: true,
outDir: `dist/${mode}`,
define: {
__DEV__: mode === 'dev' ? 'true' : 'false',
},
dts: mode === 'dev' ? { tsgo: true, tsconfig: 'tsconfig.dts.json' } : false,
});
export default defineConfig(buildModes.map((mode) => createConfig(mode)));
export default defineConfig(packageBuildModes.map((mode) => createConfig(mode)));
+2
View File
@@ -5,6 +5,7 @@ import type { UserConfig } from 'tsdown';
import { defineConfig } from 'tsdown';
import { inlineCssPlugin } from '../../build/plugins/inline-css-plugin.ts';
import { inlineTemplatePlugin } from '../../build/plugins/inline-template-plugin.ts';
import { baseConfig } from '../../build/tsdown.ts';
type BuildMode = 'dev' | 'prod';
@@ -72,6 +73,7 @@ for (const mode of buildModes) {
const entryMap = Object.fromEntries(entries.map(({ src, name }) => [isProd ? name : `${name}.dev`, src]));
configs.push({
...baseConfig,
entry: entryMap,
platform: 'browser',
format: 'es',
+6 -18
View File
@@ -7,9 +7,7 @@ import { copyCssPlugin } from '../../build/plugins/copy-css-plugin.ts';
import { inlineCssPlugin } from '../../build/plugins/inline-css-plugin.ts';
import { inlineTemplatePlugin } from '../../build/plugins/inline-template-plugin.ts';
type BuildMode = 'dev' | 'default';
const buildModes: BuildMode[] = ['dev', 'default'];
import { isDevBuildMode, type PackageBuildMode, packageBuildConfig, packageBuildModes } from '../../build/tsdown.ts';
const skinsDir = resolve(dirname(fileURLToPath(import.meta.url)), '../skins/src');
@@ -36,19 +34,14 @@ const iconEntries = Object.fromEntries(
})
);
const createConfig = (mode: BuildMode): UserConfig => ({
const createConfig = (mode: PackageBuildMode): UserConfig => ({
...packageBuildConfig(mode, 'browser'),
entry: {
index: 'src/index.ts',
...iconEntries,
...defineEntries,
...presetEntries,
},
platform: 'browser',
format: 'es',
sourcemap: true,
clean: true,
hash: false,
unbundle: true,
treeshake: {
// The sideEffects field in package.json uses dist paths, but the build
// runs against source. Ensure define/* modules (which register custom
@@ -62,16 +55,11 @@ const createConfig = (mode: BuildMode): UserConfig => ({
alias: {
'@': new URL('./src', import.meta.url).pathname,
},
outDir: `dist/${mode}`,
define: {
__DEV__: mode === 'dev' ? 'true' : 'false',
},
dts: mode === 'dev' ? { tsgo: true, tsconfig: 'tsconfig.dts.json' } : false,
plugins: [
copyCssPlugin({ skinsDir, outDir: `dist/${mode}` }),
inlineCssPlugin({ skinsDir, minify: mode !== 'dev' }),
inlineTemplatePlugin({ minify: mode !== 'dev' }),
inlineCssPlugin({ skinsDir, minify: !isDevBuildMode(mode) }),
inlineTemplatePlugin({ minify: !isDevBuildMode(mode) }),
],
});
export default defineConfig(buildModes.map((mode) => createConfig(mode)));
export default defineConfig(packageBuildModes.map((mode) => createConfig(mode)));
+4 -17
View File
@@ -3,31 +3,18 @@ import { fileURLToPath } from 'node:url';
import type { UserConfig } from 'tsdown';
import { defineConfig } from 'tsdown';
import { copyCssPlugin } from '../../build/plugins/copy-css-plugin.ts';
type BuildMode = 'dev' | 'default';
const buildModes: BuildMode[] = ['dev', 'default'];
import { type PackageBuildMode, packageBuildConfig, packageBuildModes } from '../../build/tsdown.ts';
const skinsDir = resolve(dirname(fileURLToPath(import.meta.url)), '../skins/src');
const createConfig = (mode: BuildMode): UserConfig => ({
const createConfig = (mode: PackageBuildMode): UserConfig => ({
...packageBuildConfig(mode, 'browser'),
entry: 'src/**/index.{ts,tsx}',
platform: 'browser',
format: 'es',
sourcemap: true,
clean: true,
hash: false,
unbundle: true,
noExternal: [/^@videojs\/skins/],
alias: {
'@': new URL('./src', import.meta.url).pathname,
},
outDir: `dist/${mode}`,
define: {
__DEV__: mode === 'dev' ? 'true' : 'false',
},
dts: mode === 'dev' ? { tsgo: true, tsconfig: 'tsconfig.dts.json' } : false,
plugins: [copyCssPlugin({ skinsDir, outDir: `dist/${mode}` })],
});
export default defineConfig(buildModes.map((mode) => createConfig(mode)));
export default defineConfig(packageBuildModes.map((mode) => createConfig(mode)));
+4 -17
View File
@@ -1,10 +1,7 @@
import { globSync } from 'node:fs';
import type { UserConfig } from 'tsdown';
import { defineConfig } from 'tsdown';
type BuildMode = 'dev' | 'default';
const buildModes: BuildMode[] = ['dev', 'default'];
import { type PackageBuildMode, packageBuildConfig, packageBuildModes } from '../../build/tsdown.ts';
const entries = Object.fromEntries(
globSync('src/**/*.tailwind.ts').map((file) => {
@@ -13,19 +10,9 @@ const entries = Object.fromEntries(
})
);
const createConfig = (mode: BuildMode): UserConfig => ({
const createConfig = (mode: PackageBuildMode): UserConfig => ({
...packageBuildConfig(mode, 'browser'),
entry: entries,
platform: 'browser',
format: 'es',
sourcemap: true,
clean: true,
hash: false,
unbundle: true,
outDir: `dist/${mode}`,
define: {
__DEV__: mode === 'dev' ? 'true' : 'false',
},
dts: mode === 'dev' ? { tsgo: true, tsconfig: 'tsconfig.dts.json' } : false,
copy: [
{
from: 'src/**/*.css',
@@ -46,4 +33,4 @@ const createConfig = (mode: BuildMode): UserConfig => ({
],
});
export default defineConfig(buildModes.map((mode) => createConfig(mode)));
export default defineConfig(packageBuildModes.map((mode) => createConfig(mode)));
+4 -17
View File
@@ -1,27 +1,14 @@
import type { UserConfig } from 'tsdown';
import { defineConfig } from 'tsdown';
import { type PackageBuildMode, packageBuildConfig, packageBuildModes } from '../../build/tsdown.ts';
type BuildMode = 'dev' | 'default';
const buildModes: BuildMode[] = ['dev', 'default'];
const createConfig = (mode: BuildMode): UserConfig => ({
const createConfig = (mode: PackageBuildMode): UserConfig => ({
...packageBuildConfig(mode, 'neutral'),
entry: {
index: 'src/index.ts',
dom: 'src/dom.ts',
hls: 'src/playback/engines/hls/index.ts',
},
platform: 'neutral',
format: 'es',
sourcemap: true,
clean: true,
hash: false,
unbundle: true,
outDir: `dist/${mode}`,
define: {
__DEV__: mode === 'dev' ? 'true' : 'false',
},
dts: mode === 'dev' ? { tsgo: true, tsconfig: 'tsconfig.dts.json' } : false,
});
export default defineConfig(buildModes.map((mode) => createConfig(mode)));
export default defineConfig(packageBuildModes.map((mode) => createConfig(mode)));
+4 -17
View File
@@ -1,27 +1,14 @@
import type { UserConfig } from 'tsdown';
import { defineConfig } from 'tsdown';
import { type PackageBuildMode, packageBuildConfig, packageBuildModes } from '../../build/tsdown.ts';
type BuildMode = 'dev' | 'default';
const buildModes: BuildMode[] = ['dev', 'default'];
const createConfig = (mode: BuildMode): UserConfig => ({
const createConfig = (mode: PackageBuildMode): UserConfig => ({
...packageBuildConfig(mode, 'neutral'),
entry: {
index: './src/core/index.ts',
html: './src/html/index.ts',
react: './src/react/index.ts',
},
platform: 'neutral',
format: 'es',
sourcemap: true,
clean: true,
hash: false,
unbundle: true,
outDir: `dist/${mode}`,
define: {
__DEV__: mode === 'dev' ? 'true' : 'false',
},
dts: mode === 'dev' ? { tsgo: true, tsconfig: 'tsconfig.dts.json' } : false,
});
export default defineConfig(buildModes.map((mode) => createConfig(mode)));
export default defineConfig(packageBuildModes.map((mode) => createConfig(mode)));
+2 -7
View File
@@ -1,6 +1,8 @@
import { defineConfig } from 'tsdown';
import { neutralLibraryConfig } from '../../build/tsdown.ts';
export default defineConfig({
...neutralLibraryConfig,
entry: {
array: './src/array/index.ts',
dom: './src/dom/index.ts',
@@ -14,11 +16,4 @@ export default defineConfig({
time: './src/time/index.ts',
types: './src/types/index.ts',
},
platform: 'neutral',
format: 'es',
sourcemap: true,
clean: true,
hash: false,
unbundle: true,
dts: { tsgo: true, tsconfig: 'tsconfig.dts.json' },
});