mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-11 00:06:25 +08:00
Addon-docs: Postinstall hooks to update presets
This commit is contained in:
parent
2cd2e8b07b
commit
a39724c814
@ -23,6 +23,7 @@
|
|||||||
"angular/**/*",
|
"angular/**/*",
|
||||||
"common/**/*",
|
"common/**/*",
|
||||||
"html/**/*",
|
"html/**/*",
|
||||||
|
"postinstall/**/*",
|
||||||
"react/**/*",
|
"react/**/*",
|
||||||
"vue/**/*",
|
"vue/**/*",
|
||||||
"web-components/**/*",
|
"web-components/**/*",
|
||||||
|
47
addons/docs/postinstall/presets.js
Normal file
47
addons/docs/postinstall/presets.js
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
const { addPreset, getFrameworks } = require('@storybook/addons');
|
||||||
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||||
|
const { logger } = require('@storybook/node-logger');
|
||||||
|
|
||||||
|
const SUPPORTED_FRAMEWORKS = ['angular', 'html', 'react', 'vue', 'web-components'];
|
||||||
|
|
||||||
|
export default function transformer(file, api) {
|
||||||
|
const packageJson = JSON.parse(fs.readFileSync('./package.json'));
|
||||||
|
const frameworks = getFrameworks(packageJson);
|
||||||
|
|
||||||
|
let err = null;
|
||||||
|
let framework = null;
|
||||||
|
let presetOptions = null;
|
||||||
|
if (frameworks.length !== 1) {
|
||||||
|
err = `${frameworks.length === 0 ? 'No' : 'Multiple'} frameworks found: ${frameworks}`;
|
||||||
|
} else {
|
||||||
|
// eslint-disable-next-line prefer-destructuring
|
||||||
|
framework = frameworks[0];
|
||||||
|
if (!SUPPORTED_FRAMEWORKS.includes(framework)) {
|
||||||
|
err = `Unsupported framework: '${framework}'`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err) {
|
||||||
|
logger.error(`${err}, please configure '@storybook/addon-docs' manually.`);
|
||||||
|
return file.source;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { dependencies, devDependencies } = packageJson;
|
||||||
|
if (
|
||||||
|
framework === 'react' &&
|
||||||
|
((dependencies && dependencies['react-scripts']) ||
|
||||||
|
(devDependencies && devDependencies['react-scripts']))
|
||||||
|
) {
|
||||||
|
presetOptions = {
|
||||||
|
configureJSX: true,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const j = api.jscodeshift;
|
||||||
|
const root = j(file.source);
|
||||||
|
|
||||||
|
addPreset(`@storybook/addon-docs/${framework}/preset`, presetOptions, { root, api });
|
||||||
|
|
||||||
|
return root.toSource();
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user