# Introduction The idea here is to improve perf nor fluidity of both storybook build and tests execution duration. ## Levers: - Storybook tests [shards](https://storybook.js.org/docs/writing-tests/test-runner) - Refactored storybook's build caching using `actions/cache/restore` and `actions/cache/save` to avoid useless computation with we wanna just write or retrieve it - Running storybook build with --test [flag](https://storybook.js.org/docs/api/main-config/main-config-build) ( please note that we only disable docs addons in order to keep coverage up and running ) closes https://github.com/twentyhq/core-team-issues/issues/49
71 lines
1.7 KiB
TypeScript
71 lines
1.7 KiB
TypeScript
import { StorybookConfig } from '@storybook/react-vite';
|
|
|
|
const computeStoriesGlob = () => {
|
|
if (process.env.STORYBOOK_SCOPE === 'pages') {
|
|
return [
|
|
'../src/pages/**/*.stories.@(js|jsx|ts|tsx)',
|
|
'../src/__stories__/*.stories.@(js|jsx|ts|tsx)',
|
|
'../src/pages/**/*.docs.mdx',
|
|
'../src/__stories__/*.docs.mdx',
|
|
];
|
|
}
|
|
|
|
if (process.env.STORYBOOK_SCOPE === 'modules') {
|
|
return [
|
|
'../src/modules/**/!(perf)/*.stories.@(js|jsx|ts|tsx)',
|
|
'../src/modules/**/*.docs.mdx',
|
|
];
|
|
}
|
|
|
|
if (process.env.STORYBOOK_SCOPE === 'performance') {
|
|
return ['../src/modules/**/perf/*.perf.stories.@(js|jsx|ts|tsx)'];
|
|
}
|
|
|
|
if (process.env.STORYBOOK_SCOPE === 'ui-docs') {
|
|
return ['../src/modules/ui/**/*.docs.mdx'];
|
|
}
|
|
|
|
return ['../src/**/*.docs.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'];
|
|
};
|
|
|
|
const config: StorybookConfig = {
|
|
stories: computeStoriesGlob(),
|
|
staticDirs: ['../public'],
|
|
build: {
|
|
test: {
|
|
disabledAddons: [
|
|
'@storybook/addon-docs',
|
|
'@storybook/addon-essentials/docs',
|
|
],
|
|
}
|
|
},
|
|
addons: [
|
|
'@storybook/addon-links',
|
|
'@storybook/addon-essentials',
|
|
'@storybook/addon-onboarding',
|
|
'@storybook/addon-interactions',
|
|
'@storybook/addon-coverage',
|
|
'storybook-dark-mode',
|
|
'storybook-addon-cookie',
|
|
'storybook-addon-pseudo-states',
|
|
],
|
|
framework: {
|
|
name: '@storybook/react-vite',
|
|
options: {},
|
|
},
|
|
viteFinal: async (config) => {
|
|
// Merge custom configuration into the default config
|
|
const { mergeConfig } = await import('vite');
|
|
|
|
return mergeConfig(config, {
|
|
resolve: {
|
|
alias: {
|
|
'react-dom/client': 'react-dom/profiling',
|
|
},
|
|
},
|
|
});
|
|
},
|
|
logLevel: 'error',
|
|
};
|
|
export default config;
|