1 | import fs from 'fs';
|
2 | import { presetsAddPreset, getFrameworks } from '@storybook/postinstall';
|
3 | import { logger } from '@storybook/node-logger';
|
4 |
|
5 | export 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 |
|
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 | }
|