UNPKG

1.17 kBJavaScriptView Raw
1import fs from 'fs';
2import { presetsAddPreset, getFrameworks } from '@storybook/postinstall';
3import { logger } from '@storybook/node-logger';
4
5export default function transformer(file, api) {
6 const packageJson = JSON.parse(fs.readFileSync('./package.json'));
7 const frameworks = getFrameworks(packageJson);
8
9 let err = null;
10 let framework = null;
11 let presetOptions = null;
12 if (frameworks.length !== 1) {
13 err = `${frameworks.length === 0 ? 'No' : 'Multiple'} frameworks found: ${frameworks}`;
14 logger.error(`${err}, please configure '@storybook/addon-docs' manually.`);
15 return file.source;
16 }
17
18 // eslint-disable-next-line prefer-destructuring
19 framework = frameworks[0];
20
21 const { dependencies, devDependencies } = packageJson;
22 if (
23 framework === 'react' &&
24 ((dependencies && dependencies['react-scripts']) ||
25 (devDependencies && devDependencies['react-scripts']))
26 ) {
27 presetOptions = {
28 configureJSX: true,
29 };
30 }
31
32 const j = api.jscodeshift;
33 const root = j(file.source);
34
35 presetsAddPreset(`@storybook/addon-docs/preset`, presetOptions, { root, api });
36
37 return root.toSource({ quote: 'single' });
38}