mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-05 16:11:33 +08:00
57 lines
1.9 KiB
TypeScript
57 lines
1.9 KiB
TypeScript
import dirSize from 'fast-folder-size';
|
|
// eslint-disable-next-line depend/ban-dependencies
|
|
import { pathExists } from 'fs-extra';
|
|
import { join } from 'path';
|
|
import { promisify } from 'util';
|
|
|
|
import { now, saveBench } from '../bench/utils';
|
|
import type { Task } from '../task';
|
|
import { exec } from '../utils/exec';
|
|
|
|
export const build: Task = {
|
|
description: 'Build the static version of the sandbox',
|
|
dependsOn: ['sandbox'],
|
|
async ready({ builtSandboxDir }) {
|
|
return pathExists(builtSandboxDir);
|
|
},
|
|
async run({ sandboxDir, template }, { dryRun, debug }) {
|
|
const start = now();
|
|
|
|
await exec(
|
|
`yarn build-storybook --quiet ${template.modifications?.testBuild ? '--test' : ''}`,
|
|
{ cwd: sandboxDir },
|
|
{ dryRun, debug }
|
|
);
|
|
|
|
const buildTime = now() - start;
|
|
const dir = join(sandboxDir, 'storybook-static');
|
|
const getSize = promisify(dirSize);
|
|
const buildSize = await getSize(dir).catch(() => 0);
|
|
const buildSbAddonsSize = await getSize(join(dir, 'sb-addons')).catch(() => 0);
|
|
const buildSbCommonSize = await getSize(join(dir, 'sb-common-assets')).catch(() => 0);
|
|
const buildSbManagerSize = await getSize(join(dir, 'sb-manager')).catch(() => 0);
|
|
const buildSbPreviewSize = await getSize(join(dir, 'sb-preview')).catch(() => 0);
|
|
const buildPrebuildSize =
|
|
buildSbAddonsSize + buildSbCommonSize + buildSbManagerSize + buildSbPreviewSize;
|
|
|
|
const buildStaticSize = await getSize(join(dir, 'static')).catch(() => 0);
|
|
const buildPreviewSize = buildSize - buildPrebuildSize - buildStaticSize;
|
|
|
|
await saveBench(
|
|
'build',
|
|
{
|
|
buildTime,
|
|
buildSize,
|
|
buildSbAddonsSize,
|
|
buildSbCommonSize,
|
|
buildSbManagerSize,
|
|
buildSbPreviewSize,
|
|
buildStaticSize,
|
|
buildPrebuildSize,
|
|
buildPreviewSize,
|
|
},
|
|
{ rootDir: sandboxDir }
|
|
);
|
|
},
|
|
};
|