mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-05 16:11:33 +08:00
71 lines
2.2 KiB
TypeScript
71 lines
2.2 KiB
TypeScript
import { dedent } from 'ts-dedent';
|
|
import deprecate from 'util-deprecate';
|
|
import glob from 'glob';
|
|
import path from 'path';
|
|
|
|
import { boost } from './interpret-files';
|
|
|
|
const warnLegacyConfigurationFiles = deprecate(
|
|
() => {},
|
|
dedent`
|
|
Configuration files such as "config", "presets" and "addons" are deprecated and will be removed in Storybook 7.0.
|
|
Read more about it in the migration guide: https://github.com/storybookjs/storybook/blob/master/MIGRATION.md#to-mainjs-configuration
|
|
`
|
|
);
|
|
|
|
const errorMixingConfigFiles = (first: string, second: string, configDir: string) => {
|
|
const firstPath = path.resolve(configDir, first);
|
|
const secondPath = path.resolve(configDir, second);
|
|
throw new Error(dedent`
|
|
You have mixing configuration files:
|
|
${firstPath}
|
|
${secondPath}
|
|
"${first}" and "${second}" cannot coexist.
|
|
Please check the documentation for migration steps: https://github.com/storybookjs/storybook/blob/master/MIGRATION.md#to-mainjs-configuration
|
|
`);
|
|
};
|
|
|
|
export function validateConfigurationFiles(configDir: string) {
|
|
const extensionsPattern = `{${Array.from(boost).join(',')}}`;
|
|
const exists = (file: string) =>
|
|
!!glob.sync(path.resolve(configDir, `${file}${extensionsPattern}`)).length;
|
|
|
|
const main = exists('main');
|
|
const config = exists('config');
|
|
|
|
if (!main && !config) {
|
|
throw new Error(dedent`
|
|
No configuration files have been found in your configDir (${path.resolve(configDir)}).
|
|
Storybook needs either a "main" or "config" file.
|
|
`);
|
|
}
|
|
|
|
if (main && config) {
|
|
throw new Error(dedent`
|
|
You have both a "main" and a "config". Please remove the "config" file from your configDir (${path.resolve(
|
|
configDir,
|
|
'config'
|
|
)})`);
|
|
}
|
|
|
|
const presets = exists('presets');
|
|
if (main && presets) {
|
|
errorMixingConfigFiles('main', 'presets', configDir);
|
|
}
|
|
|
|
const preview = exists('preview');
|
|
if (preview && config) {
|
|
errorMixingConfigFiles('preview', 'config', configDir);
|
|
}
|
|
|
|
const addons = exists('addons');
|
|
const manager = exists('manager');
|
|
if (manager && addons) {
|
|
errorMixingConfigFiles('manager', 'addons', configDir);
|
|
}
|
|
|
|
if (presets || config || addons) {
|
|
warnLegacyConfigurationFiles();
|
|
}
|
|
}
|