@storybook/cli 7.0.0-alpha.31 → 7.0.0-alpha.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +35 -0
- package/bin/index.js +1 -1
- package/dist/generate.d.ts +1 -0
- package/dist/generate.js +265 -0
- package/dist/generate.mjs +265 -0
- package/package.json +18 -12
- package/rendererAssets/svelte/Button.svelte +4 -3
- package/{dist/cjs/generators/ANGULAR → templates/angular}/template-csf/.storybook/tsconfig.json +0 -0
- package/{dist/cjs/generators/ANGULAR → templates/angular}/template-csf/.storybook/typings.d.ts +0 -0
- package/{dist/cjs/generators/AURELIA → templates/aurelia}/template-csf/.storybook/tsconfig.json +0 -0
- package/{dist/cjs/generators/AURELIA → templates/aurelia}/template-csf/.storybook/typings.d.ts +0 -0
- package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/addons.js +1 -1
- package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/index.js +13 -6
- package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/rn-addons.js +1 -1
- package/templates/react-native/template-csf/storybook/stories/Button/Button.stories.js +20 -0
- package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/stories/Button/index.js +8 -10
- package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/stories/CenterView/index.js +8 -9
- package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/stories/CenterView/style.js +3 -3
- package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/stories/Welcome/Welcome.stories.js +2 -3
- package/templates/react-native/template-csf/storybook/stories/Welcome/index.js +57 -0
- package/templates/react-native/template-csf/storybook/stories/index.js +2 -0
- package/templates/server/template-csf/.storybook/preview.js +5 -0
- package/dist/cjs/NpmOptions.js +0 -1
- package/dist/cjs/add.js +0 -149
- package/dist/cjs/automigrate/fixes/angular12.js +0 -74
- package/dist/cjs/automigrate/fixes/builder-vite.js +0 -118
- package/dist/cjs/automigrate/fixes/cra5.js +0 -82
- package/dist/cjs/automigrate/fixes/eslint-plugin.js +0 -126
- package/dist/cjs/automigrate/fixes/index.js +0 -45
- package/dist/cjs/automigrate/fixes/mainjsFramework.js +0 -94
- package/dist/cjs/automigrate/fixes/new-frameworks.js +0 -258
- package/dist/cjs/automigrate/fixes/npm7.js +0 -57
- package/dist/cjs/automigrate/fixes/sb-scripts.js +0 -140
- package/dist/cjs/automigrate/fixes/vue3.js +0 -77
- package/dist/cjs/automigrate/fixes/webpack5.js +0 -151
- package/dist/cjs/automigrate/helpers/getEslintInfo.js +0 -28
- package/dist/cjs/automigrate/index.js +0 -98
- package/dist/cjs/automigrate/types.js +0 -5
- package/dist/cjs/babel-config.js +0 -65
- package/dist/cjs/build.js +0 -36
- package/dist/cjs/detect-nextjs.js +0 -33
- package/dist/cjs/detect-webpack.js +0 -39
- package/dist/cjs/detect.js +0 -179
- package/dist/cjs/dev.js +0 -66
- package/dist/cjs/dirs.js +0 -12
- package/dist/cjs/extract.js +0 -93
- package/dist/cjs/generate.js +0 -215
- package/dist/cjs/generators/ANGULAR/angular-helpers.js +0 -106
- package/dist/cjs/generators/ANGULAR/index.js +0 -95
- package/dist/cjs/generators/AURELIA/index.js +0 -41
- package/dist/cjs/generators/EMBER/index.js +0 -20
- package/dist/cjs/generators/HTML/index.js +0 -15
- package/dist/cjs/generators/MARIONETTE/index.js +0 -15
- package/dist/cjs/generators/MARKO/index.js +0 -15
- package/dist/cjs/generators/MITHRIL/index.js +0 -15
- package/dist/cjs/generators/PREACT/index.js +0 -15
- package/dist/cjs/generators/RAX/index.js +0 -28
- package/dist/cjs/generators/REACT/index.js +0 -15
- package/dist/cjs/generators/REACT_NATIVE/index.js +0 -55
- package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/addons.js +0 -7
- package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/index.js +0 -31
- package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/rn-addons.js +0 -5
- package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/Button/Button.stories.js +0 -23
- package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/Button/index.js +0 -32
- package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/CenterView/index.js +0 -31
- package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/CenterView/style.js +0 -15
- package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/Welcome/Welcome.stories.js +0 -15
- package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/Welcome/index.js +0 -68
- package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/index.js +0 -5
- package/dist/cjs/generators/REACT_SCRIPTS/index.js +0 -68
- package/dist/cjs/generators/RIOT/index.js +0 -17
- package/dist/cjs/generators/SERVER/index.js +0 -20
- package/dist/cjs/generators/SERVER/template-csf/.storybook/preview.js +0 -12
- package/dist/cjs/generators/SFC_VUE/index.js +0 -15
- package/dist/cjs/generators/SVELTE/index.js +0 -59
- package/dist/cjs/generators/VUE/index.js +0 -17
- package/dist/cjs/generators/VUE3/index.js +0 -17
- package/dist/cjs/generators/WEB-COMPONENTS/index.js +0 -17
- package/dist/cjs/generators/WEBPACK_REACT/index.js +0 -15
- package/dist/cjs/generators/baseGenerator.js +0 -208
- package/dist/cjs/generators/configure.js +0 -83
- package/dist/cjs/generators/types.js +0 -5
- package/dist/cjs/helpers.js +0 -258
- package/dist/cjs/initiate.js +0 -295
- package/dist/cjs/js-package-manager/JsPackageManager.js +0 -358
- package/dist/cjs/js-package-manager/JsPackageManagerFactory.js +0 -71
- package/dist/cjs/js-package-manager/NPMProxy.js +0 -112
- package/dist/cjs/js-package-manager/PackageJson.js +0 -5
- package/dist/cjs/js-package-manager/Yarn1Proxy.js +0 -72
- package/dist/cjs/js-package-manager/Yarn2Proxy.js +0 -68
- package/dist/cjs/js-package-manager/index.js +0 -44
- package/dist/cjs/link.js +0 -99
- package/dist/cjs/migrate.js +0 -33
- package/dist/cjs/project_types.js +0 -263
- package/dist/cjs/repro-generators/configs.js +0 -201
- package/dist/cjs/repro-generators/scripts.js +0 -338
- package/dist/cjs/repro-next.js +0 -182
- package/dist/cjs/repro-templates.js +0 -103
- package/dist/cjs/repro.js +0 -194
- package/dist/cjs/typings.d.ts +0 -3
- package/dist/cjs/upgrade.js +0 -170
- package/dist/cjs/utils.js +0 -22
- package/dist/cjs/versions.js +0 -89
- package/dist/cjs/warn.js +0 -32
- package/dist/cjs/window.d.js +0 -5
- package/dist/esm/NpmOptions.js +0 -0
- package/dist/esm/add.js +0 -121
- package/dist/esm/automigrate/fixes/angular12.js +0 -58
- package/dist/esm/automigrate/fixes/builder-vite.js +0 -103
- package/dist/esm/automigrate/fixes/cra5.js +0 -66
- package/dist/esm/automigrate/fixes/eslint-plugin.js +0 -111
- package/dist/esm/automigrate/fixes/index.js +0 -12
- package/dist/esm/automigrate/fixes/mainjsFramework.js +0 -76
- package/dist/esm/automigrate/fixes/new-frameworks.js +0 -234
- package/dist/esm/automigrate/fixes/npm7.js +0 -45
- package/dist/esm/automigrate/fixes/sb-scripts.js +0 -119
- package/dist/esm/automigrate/fixes/vue3.js +0 -60
- package/dist/esm/automigrate/fixes/webpack5.js +0 -131
- package/dist/esm/automigrate/helpers/getEslintInfo.js +0 -14
- package/dist/esm/automigrate/index.js +0 -80
- package/dist/esm/automigrate/types.js +0 -1
- package/dist/esm/babel-config.js +0 -42
- package/dist/esm/build.js +0 -22
- package/dist/esm/detect-nextjs.js +0 -24
- package/dist/esm/detect-webpack.js +0 -30
- package/dist/esm/detect.js +0 -152
- package/dist/esm/dev.js +0 -47
- package/dist/esm/dirs.js +0 -4
- package/dist/esm/extract.js +0 -77
- package/dist/esm/generate.js +0 -162
- package/dist/esm/generators/ANGULAR/angular-helpers.js +0 -82
- package/dist/esm/generators/ANGULAR/index.js +0 -76
- package/dist/esm/generators/ANGULAR/template-csf/.storybook/tsconfig.json +0 -10
- package/dist/esm/generators/ANGULAR/template-csf/.storybook/typings.d.ts +0 -4
- package/dist/esm/generators/AURELIA/index.js +0 -32
- package/dist/esm/generators/AURELIA/template-csf/.storybook/tsconfig.json +0 -9
- package/dist/esm/generators/AURELIA/template-csf/.storybook/typings.d.ts +0 -4
- package/dist/esm/generators/EMBER/index.js +0 -12
- package/dist/esm/generators/HTML/index.js +0 -7
- package/dist/esm/generators/MARIONETTE/index.js +0 -7
- package/dist/esm/generators/MARKO/index.js +0 -7
- package/dist/esm/generators/MITHRIL/index.js +0 -7
- package/dist/esm/generators/PREACT/index.js +0 -7
- package/dist/esm/generators/RAX/index.js +0 -20
- package/dist/esm/generators/REACT/index.js +0 -7
- package/dist/esm/generators/REACT_NATIVE/index.js +0 -42
- package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/stories/Button/Button.stories.js +0 -12
- package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/stories/Welcome/index.js +0 -54
- package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/stories/index.js +0 -2
- package/dist/esm/generators/REACT_SCRIPTS/index.js +0 -49
- package/dist/esm/generators/RIOT/index.js +0 -9
- package/dist/esm/generators/SERVER/index.js +0 -11
- package/dist/esm/generators/SERVER/template-csf/.storybook/preview.js +0 -5
- package/dist/esm/generators/SFC_VUE/index.js +0 -7
- package/dist/esm/generators/SVELTE/index.js +0 -44
- package/dist/esm/generators/VUE/index.js +0 -9
- package/dist/esm/generators/VUE3/index.js +0 -9
- package/dist/esm/generators/WEB-COMPONENTS/index.js +0 -9
- package/dist/esm/generators/WEBPACK_REACT/index.js +0 -7
- package/dist/esm/generators/baseGenerator.js +0 -191
- package/dist/esm/generators/configure.js +0 -69
- package/dist/esm/generators/types.js +0 -1
- package/dist/esm/helpers.js +0 -207
- package/dist/esm/initiate.js +0 -254
- package/dist/esm/js-package-manager/JsPackageManager.js +0 -334
- package/dist/esm/js-package-manager/JsPackageManagerFactory.js +0 -57
- package/dist/esm/js-package-manager/NPMProxy.js +0 -99
- package/dist/esm/js-package-manager/PackageJson.js +0 -1
- package/dist/esm/js-package-manager/Yarn1Proxy.js +0 -62
- package/dist/esm/js-package-manager/Yarn2Proxy.js +0 -58
- package/dist/esm/js-package-manager/index.js +0 -3
- package/dist/esm/link.js +0 -69
- package/dist/esm/migrate.js +0 -25
- package/dist/esm/project_types.js +0 -248
- package/dist/esm/repro-generators/configs.js +0 -174
- package/dist/esm/repro-generators/scripts.js +0 -307
- package/dist/esm/repro-next.js +0 -163
- package/dist/esm/repro-templates.js +0 -94
- package/dist/esm/repro.js +0 -170
- package/dist/esm/typings.d.ts +0 -3
- package/dist/esm/upgrade.js +0 -132
- package/dist/esm/utils.js +0 -13
- package/dist/esm/versions.js +0 -82
- package/dist/esm/warn.js +0 -16
- package/dist/esm/window.d.js +0 -1
- package/dist/types/NpmOptions.d.ts +0 -4
- package/dist/types/add.d.ts +0 -10
- package/dist/types/automigrate/fixes/angular12.d.ts +0 -15
- package/dist/types/automigrate/fixes/builder-vite.d.ts +0 -19
- package/dist/types/automigrate/fixes/cra5.d.ts +0 -15
- package/dist/types/automigrate/fixes/eslint-plugin.d.ts +0 -15
- package/dist/types/automigrate/fixes/index.d.ts +0 -3
- package/dist/types/automigrate/fixes/mainjsFramework.d.ts +0 -8
- package/dist/types/automigrate/fixes/new-frameworks.d.ts +0 -31
- package/dist/types/automigrate/fixes/npm7.d.ts +0 -9
- package/dist/types/automigrate/fixes/sb-scripts.d.ts +0 -23
- package/dist/types/automigrate/fixes/vue3.d.ts +0 -15
- package/dist/types/automigrate/fixes/webpack5.d.ts +0 -26
- package/dist/types/automigrate/helpers/getEslintInfo.d.ts +0 -2
- package/dist/types/automigrate/index.d.ts +0 -7
- package/dist/types/automigrate/types.d.ts +0 -15
- package/dist/types/babel-config.d.ts +0 -4
- package/dist/types/build.d.ts +0 -1
- package/dist/types/detect-nextjs.d.ts +0 -2
- package/dist/types/detect-webpack.d.ts +0 -2
- package/dist/types/detect.d.ts +0 -16
- package/dist/types/dev.d.ts +0 -1
- package/dist/types/dirs.d.ts +0 -1
- package/dist/types/extract.d.ts +0 -1
- package/dist/types/generate.d.ts +0 -1
- package/dist/types/generators/ANGULAR/angular-helpers.d.ts +0 -6
- package/dist/types/generators/ANGULAR/index.d.ts +0 -3
- package/dist/types/generators/AURELIA/index.d.ts +0 -3
- package/dist/types/generators/EMBER/index.d.ts +0 -3
- package/dist/types/generators/HTML/index.d.ts +0 -3
- package/dist/types/generators/MARIONETTE/index.d.ts +0 -3
- package/dist/types/generators/MARKO/index.d.ts +0 -3
- package/dist/types/generators/MITHRIL/index.d.ts +0 -3
- package/dist/types/generators/PREACT/index.d.ts +0 -3
- package/dist/types/generators/RAX/index.d.ts +0 -3
- package/dist/types/generators/REACT/index.d.ts +0 -3
- package/dist/types/generators/REACT_NATIVE/index.d.ts +0 -4
- package/dist/types/generators/REACT_SCRIPTS/index.d.ts +0 -3
- package/dist/types/generators/RIOT/index.d.ts +0 -3
- package/dist/types/generators/SERVER/index.d.ts +0 -3
- package/dist/types/generators/SFC_VUE/index.d.ts +0 -3
- package/dist/types/generators/SVELTE/index.d.ts +0 -3
- package/dist/types/generators/VUE/index.d.ts +0 -3
- package/dist/types/generators/VUE3/index.d.ts +0 -3
- package/dist/types/generators/WEB-COMPONENTS/index.d.ts +0 -3
- package/dist/types/generators/WEBPACK_REACT/index.d.ts +0 -3
- package/dist/types/generators/baseGenerator.d.ts +0 -5
- package/dist/types/generators/configure.d.ts +0 -19
- package/dist/types/generators/types.d.ts +0 -38
- package/dist/types/helpers.d.ts +0 -26
- package/dist/types/initiate.d.ts +0 -3
- package/dist/types/js-package-manager/JsPackageManager.d.ts +0 -118
- package/dist/types/js-package-manager/JsPackageManagerFactory.d.ts +0 -4
- package/dist/types/js-package-manager/NPMProxy.d.ts +0 -23
- package/dist/types/js-package-manager/PackageJson.d.ts +0 -4
- package/dist/types/js-package-manager/Yarn1Proxy.d.ts +0 -17
- package/dist/types/js-package-manager/Yarn2Proxy.d.ts +0 -17
- package/dist/types/js-package-manager/index.d.ts +0 -3
- package/dist/types/link.d.ts +0 -7
- package/dist/types/migrate.d.ts +0 -1
- package/dist/types/project_types.d.ts +0 -64
- package/dist/types/repro-generators/configs.d.ts +0 -44
- package/dist/types/repro-generators/scripts.d.ts +0 -44
- package/dist/types/repro-next.d.ts +0 -8
- package/dist/types/repro-templates.d.ts +0 -73
- package/dist/types/repro.d.ts +0 -14
- package/dist/types/upgrade.d.ts +0 -19
- package/dist/types/utils.d.ts +0 -2
- package/dist/types/versions.d.ts +0 -82
- package/dist/types/warn.d.ts +0 -5
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { dedent } from 'ts-dedent';
|
|
3
|
-
import semver from '@storybook/semver';
|
|
4
|
-
import { webpack5 } from './webpack5';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Is the user upgrading to Angular12?
|
|
8
|
-
*
|
|
9
|
-
* If so:
|
|
10
|
-
* - Run webpack5 fix
|
|
11
|
-
*/
|
|
12
|
-
export const angular12 = {
|
|
13
|
-
id: 'angular12',
|
|
14
|
-
|
|
15
|
-
async check({
|
|
16
|
-
packageManager
|
|
17
|
-
}) {
|
|
18
|
-
const packageJson = packageManager.retrievePackageJson();
|
|
19
|
-
const {
|
|
20
|
-
dependencies,
|
|
21
|
-
devDependencies
|
|
22
|
-
} = packageJson;
|
|
23
|
-
const angularVersion = dependencies['@angular/core'] || devDependencies['@angular/core'];
|
|
24
|
-
const angularCoerced = semver.coerce(angularVersion)?.version;
|
|
25
|
-
|
|
26
|
-
if (!angularCoerced || semver.lt(angularCoerced, '12.0.0')) {
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const builderInfo = await webpack5.checkWebpack5Builder(packageJson);
|
|
31
|
-
return builderInfo ? Object.assign({
|
|
32
|
-
angularVersion
|
|
33
|
-
}, builderInfo) : null;
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
prompt({
|
|
37
|
-
angularVersion
|
|
38
|
-
}) {
|
|
39
|
-
const angularFormatted = chalk.cyan(`Angular ${angularVersion}`);
|
|
40
|
-
return dedent`
|
|
41
|
-
We've detected you are running ${angularFormatted} which is powered by webpack5.
|
|
42
|
-
Your Storybook's main.js files specifies webpack4, which is incompatible.
|
|
43
|
-
|
|
44
|
-
In order to work with your version of Angular, we need to install Storybook's ${chalk.cyan('@storybook/builder-webpack5')}.
|
|
45
|
-
|
|
46
|
-
More info: ${chalk.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#angular12-upgrade')}
|
|
47
|
-
`;
|
|
48
|
-
},
|
|
49
|
-
|
|
50
|
-
async run(options) {
|
|
51
|
-
return webpack5.run(Object.assign({}, options, {
|
|
52
|
-
result: Object.assign({
|
|
53
|
-
webpackVersion: null
|
|
54
|
-
}, options.result)
|
|
55
|
-
}));
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
};
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { dedent } from 'ts-dedent';
|
|
3
|
-
import { readConfig, writeConfig } from '@storybook/csf-tools';
|
|
4
|
-
import { getStorybookInfo } from '@storybook/core-common';
|
|
5
|
-
const logger = console;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Is the user using 'storybook-builder-vite' in their project?
|
|
9
|
-
*
|
|
10
|
-
* If so, prompt them to upgrade to '@storybook/builder-vite'.
|
|
11
|
-
*
|
|
12
|
-
* - Add '@storybook/builder-vite' as dev dependency
|
|
13
|
-
* - Remove 'storybook-builder-vite' dependency
|
|
14
|
-
* - Add core.builder = '@storybook/builder-vite' to main.js
|
|
15
|
-
*/
|
|
16
|
-
export const builderVite = {
|
|
17
|
-
id: 'builder-vite',
|
|
18
|
-
|
|
19
|
-
async check({
|
|
20
|
-
packageManager
|
|
21
|
-
}) {
|
|
22
|
-
const packageJson = packageManager.retrievePackageJson();
|
|
23
|
-
const {
|
|
24
|
-
mainConfig
|
|
25
|
-
} = getStorybookInfo(packageJson);
|
|
26
|
-
|
|
27
|
-
if (!mainConfig) {
|
|
28
|
-
logger.warn('Unable to find storybook main.js config');
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const main = await readConfig(mainConfig);
|
|
33
|
-
const builder = main.getFieldValue(['core', 'builder']);
|
|
34
|
-
const builderName = typeof builder === 'string' ? builder : builder?.name;
|
|
35
|
-
|
|
36
|
-
if (builderName !== 'storybook-builder-vite') {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return {
|
|
41
|
-
builder,
|
|
42
|
-
main,
|
|
43
|
-
packageJson
|
|
44
|
-
};
|
|
45
|
-
},
|
|
46
|
-
|
|
47
|
-
prompt({
|
|
48
|
-
builder
|
|
49
|
-
}) {
|
|
50
|
-
const builderFormatted = chalk.cyan(JSON.stringify(builder, null, 2));
|
|
51
|
-
return dedent`
|
|
52
|
-
We've detected you're using the community vite builder: ${builderFormatted}
|
|
53
|
-
|
|
54
|
-
'storybook-builder-vite' is deprecated and now located at ${chalk.cyan('@storybook/builder-vite')}.
|
|
55
|
-
|
|
56
|
-
We can upgrade your project to use the new builder automatically.
|
|
57
|
-
|
|
58
|
-
More info: ${chalk.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-renamed')}
|
|
59
|
-
`;
|
|
60
|
-
},
|
|
61
|
-
|
|
62
|
-
async run({
|
|
63
|
-
result: {
|
|
64
|
-
builder,
|
|
65
|
-
main,
|
|
66
|
-
packageJson
|
|
67
|
-
},
|
|
68
|
-
packageManager,
|
|
69
|
-
dryRun
|
|
70
|
-
}) {
|
|
71
|
-
const {
|
|
72
|
-
dependencies = {},
|
|
73
|
-
devDependencies = {}
|
|
74
|
-
} = packageJson;
|
|
75
|
-
logger.info(`Removing existing 'storybook-builder-vite' dependency`);
|
|
76
|
-
|
|
77
|
-
if (!dryRun) {
|
|
78
|
-
delete dependencies['storybook-builder-vite'];
|
|
79
|
-
delete devDependencies['storybook-builder-vite'];
|
|
80
|
-
packageManager.writePackageJson(packageJson);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
logger.info(`Adding '@storybook/builder-vite' as dev dependency`);
|
|
84
|
-
|
|
85
|
-
if (!dryRun) {
|
|
86
|
-
packageManager.addDependencies({
|
|
87
|
-
installAsDevDependencies: true
|
|
88
|
-
}, ['@storybook/builder-vite']);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
logger.info(`Updating main.js to use vite builder`);
|
|
92
|
-
|
|
93
|
-
if (!dryRun) {
|
|
94
|
-
const updatedBuilder = typeof builder === 'string' ? '@storybook/builder-vite' : {
|
|
95
|
-
name: '@storybook/builder-vite',
|
|
96
|
-
options: builder.options
|
|
97
|
-
};
|
|
98
|
-
main.setFieldValue(['core', 'builder'], updatedBuilder);
|
|
99
|
-
await writeConfig(main);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
};
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
const _excluded = ["craVersion"];
|
|
2
|
-
|
|
3
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
4
|
-
|
|
5
|
-
import chalk from 'chalk';
|
|
6
|
-
import { dedent } from 'ts-dedent';
|
|
7
|
-
import semver from '@storybook/semver';
|
|
8
|
-
import { webpack5 } from './webpack5';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Is the user upgrading from CRA4 to CRA5?
|
|
12
|
-
*
|
|
13
|
-
* If so:
|
|
14
|
-
* - Run webpack5 fix
|
|
15
|
-
*/
|
|
16
|
-
export const cra5 = {
|
|
17
|
-
id: 'cra5',
|
|
18
|
-
|
|
19
|
-
async check({
|
|
20
|
-
packageManager
|
|
21
|
-
}) {
|
|
22
|
-
const packageJson = packageManager.retrievePackageJson();
|
|
23
|
-
const {
|
|
24
|
-
dependencies,
|
|
25
|
-
devDependencies
|
|
26
|
-
} = packageJson;
|
|
27
|
-
const craVersion = dependencies['react-scripts'] || devDependencies['react-scripts'];
|
|
28
|
-
const craCoerced = semver.coerce(craVersion)?.version;
|
|
29
|
-
|
|
30
|
-
if (!craCoerced || semver.lt(craCoerced, '5.0.0')) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const builderInfo = await webpack5.checkWebpack5Builder(packageJson);
|
|
35
|
-
return builderInfo ? Object.assign({
|
|
36
|
-
craVersion
|
|
37
|
-
}, builderInfo) : null;
|
|
38
|
-
},
|
|
39
|
-
|
|
40
|
-
prompt(_ref) {
|
|
41
|
-
let {
|
|
42
|
-
craVersion
|
|
43
|
-
} = _ref,
|
|
44
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
45
|
-
|
|
46
|
-
const craFormatted = chalk.cyan(`Create React App (CRA) ${craVersion}`);
|
|
47
|
-
console.log(Object.assign({}, rest));
|
|
48
|
-
return dedent`
|
|
49
|
-
We've detected you are running ${craFormatted} which is powered by webpack5.
|
|
50
|
-
Your Storybook's main.js files specifies webpack4, which is incompatible.
|
|
51
|
-
|
|
52
|
-
In order to work with your version of CRA, we need to install Storybook's ${chalk.cyan('@storybook/builder-webpack5')}.
|
|
53
|
-
|
|
54
|
-
More info: ${chalk.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#cra5-upgrade')}
|
|
55
|
-
`;
|
|
56
|
-
},
|
|
57
|
-
|
|
58
|
-
async run(options) {
|
|
59
|
-
return webpack5.run(Object.assign({}, options, {
|
|
60
|
-
result: Object.assign({
|
|
61
|
-
webpackVersion: null
|
|
62
|
-
}, options.result)
|
|
63
|
-
}));
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
};
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { dedent } from 'ts-dedent';
|
|
3
|
-
import { readConfig, writeConfig } from '@storybook/csf-tools';
|
|
4
|
-
import { getStorybookInfo } from '@storybook/core-common';
|
|
5
|
-
import { findEslintFile, SUPPORTED_ESLINT_EXTENSIONS } from '../helpers/getEslintInfo';
|
|
6
|
-
const logger = console;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Does the user not have eslint-plugin-storybook installed?
|
|
10
|
-
*
|
|
11
|
-
* If so:
|
|
12
|
-
* - Install it, and if possible configure it
|
|
13
|
-
*/
|
|
14
|
-
export const eslintPlugin = {
|
|
15
|
-
id: 'eslintPlugin',
|
|
16
|
-
|
|
17
|
-
async check({
|
|
18
|
-
packageManager
|
|
19
|
-
}) {
|
|
20
|
-
const packageJson = packageManager.retrievePackageJson();
|
|
21
|
-
const {
|
|
22
|
-
dependencies,
|
|
23
|
-
devDependencies
|
|
24
|
-
} = packageJson;
|
|
25
|
-
const eslintPluginStorybook = dependencies['eslint-plugin-storybook'] || devDependencies['eslint-plugin-storybook'];
|
|
26
|
-
const eslintDependency = dependencies.eslint || devDependencies.eslint;
|
|
27
|
-
|
|
28
|
-
if (eslintPluginStorybook || !eslintDependency) {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const {
|
|
33
|
-
mainConfig
|
|
34
|
-
} = getStorybookInfo(packageJson);
|
|
35
|
-
|
|
36
|
-
if (!mainConfig) {
|
|
37
|
-
logger.warn('Unable to find storybook main.js config, skipping');
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
let eslintFile;
|
|
42
|
-
let unsupportedExtension;
|
|
43
|
-
|
|
44
|
-
try {
|
|
45
|
-
eslintFile = findEslintFile();
|
|
46
|
-
} catch (err) {
|
|
47
|
-
unsupportedExtension = err.message;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (!eslintFile && !unsupportedExtension) {
|
|
51
|
-
logger.warn('Unable to find .eslintrc config file, skipping');
|
|
52
|
-
return null;
|
|
53
|
-
} // If in the future the eslint plugin has a framework option, using main to extract the framework field will be very useful
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const main = await readConfig(mainConfig);
|
|
57
|
-
return {
|
|
58
|
-
eslintFile,
|
|
59
|
-
main,
|
|
60
|
-
unsupportedExtension
|
|
61
|
-
};
|
|
62
|
-
},
|
|
63
|
-
|
|
64
|
-
prompt() {
|
|
65
|
-
return dedent`
|
|
66
|
-
We've detected you are not using our eslint-plugin.
|
|
67
|
-
|
|
68
|
-
In order to have the best experience with Storybook and follow best practices, we advise you to install eslint-plugin-storybook.
|
|
69
|
-
|
|
70
|
-
More info: ${chalk.yellow('https://github.com/storybookjs/eslint-plugin-storybook#readme')}
|
|
71
|
-
`;
|
|
72
|
-
},
|
|
73
|
-
|
|
74
|
-
async run({
|
|
75
|
-
result: {
|
|
76
|
-
eslintFile,
|
|
77
|
-
unsupportedExtension
|
|
78
|
-
},
|
|
79
|
-
packageManager,
|
|
80
|
-
dryRun
|
|
81
|
-
}) {
|
|
82
|
-
const deps = [`eslint-plugin-storybook`];
|
|
83
|
-
logger.info(`✅ Adding dependencies: ${deps}`);
|
|
84
|
-
if (!dryRun) packageManager.addDependencies({
|
|
85
|
-
installAsDevDependencies: true
|
|
86
|
-
}, deps);
|
|
87
|
-
|
|
88
|
-
if (!dryRun && unsupportedExtension) {
|
|
89
|
-
throw new Error(dedent`
|
|
90
|
-
⚠️ The plugin was successfuly installed but failed to configure.
|
|
91
|
-
|
|
92
|
-
Found an .eslintrc config file with an unsupported automigration format: ${unsupportedExtension}.
|
|
93
|
-
Supported formats for automigration are: ${SUPPORTED_ESLINT_EXTENSIONS.join(', ')}.
|
|
94
|
-
|
|
95
|
-
Please refer to https://github.com/storybookjs/eslint-plugin-storybook#usage to finish setting up the plugin manually.
|
|
96
|
-
`);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
const eslint = await readConfig(eslintFile);
|
|
100
|
-
logger.info(`✅ Configuring eslint rules in ${eslint.fileName}`);
|
|
101
|
-
|
|
102
|
-
if (!dryRun) {
|
|
103
|
-
logger.info(`✅ Adding Storybook to extends list`);
|
|
104
|
-
const extendsConfig = eslint.getFieldValue(['extends']) || [];
|
|
105
|
-
const existingConfigValue = Array.isArray(extendsConfig) ? extendsConfig : [extendsConfig];
|
|
106
|
-
eslint.setFieldValue(['extends'], [...existingConfigValue, 'plugin:storybook/recommended']);
|
|
107
|
-
await writeConfig(eslint);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { cra5 } from './cra5';
|
|
2
|
-
import { webpack5 } from './webpack5';
|
|
3
|
-
import { angular12 } from './angular12';
|
|
4
|
-
import { vue3 } from './vue3';
|
|
5
|
-
import { mainjsFramework } from './mainjsFramework';
|
|
6
|
-
import { eslintPlugin } from './eslint-plugin';
|
|
7
|
-
import { builderVite } from './builder-vite';
|
|
8
|
-
import { npm7 } from './npm7';
|
|
9
|
-
import { sbScripts } from './sb-scripts';
|
|
10
|
-
import { newFrameworks } from './new-frameworks';
|
|
11
|
-
export * from '../types';
|
|
12
|
-
export const fixes = [cra5, webpack5, angular12, vue3, mainjsFramework, eslintPlugin, builderVite, npm7, sbScripts, newFrameworks];
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { dedent } from 'ts-dedent';
|
|
3
|
-
import semver from '@storybook/semver';
|
|
4
|
-
import { readConfig, writeConfig } from '@storybook/csf-tools';
|
|
5
|
-
import { getStorybookInfo } from '@storybook/core-common';
|
|
6
|
-
const logger = console;
|
|
7
|
-
export const mainjsFramework = {
|
|
8
|
-
id: 'mainjsFramework',
|
|
9
|
-
|
|
10
|
-
async check({
|
|
11
|
-
packageManager
|
|
12
|
-
}) {
|
|
13
|
-
const packageJson = packageManager.retrievePackageJson(); // FIXME: use renderer in SB7?
|
|
14
|
-
|
|
15
|
-
const {
|
|
16
|
-
mainConfig,
|
|
17
|
-
framework,
|
|
18
|
-
version: storybookVersion
|
|
19
|
-
} = getStorybookInfo(packageJson);
|
|
20
|
-
|
|
21
|
-
if (!mainConfig) {
|
|
22
|
-
logger.warn('Unable to find storybook main.js config, skipping');
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const storybookCoerced = storybookVersion && semver.coerce(storybookVersion)?.version;
|
|
27
|
-
|
|
28
|
-
if (!storybookCoerced) {
|
|
29
|
-
logger.warn(dedent`
|
|
30
|
-
❌ Unable to determine storybook version, skipping ${chalk.cyan('mainjsFramework')} fix.
|
|
31
|
-
🤔 Are you running automigrate from your project directory?
|
|
32
|
-
`);
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const main = await readConfig(mainConfig);
|
|
37
|
-
const currentFramework = main.getFieldValue(['framework']);
|
|
38
|
-
const features = main.getFieldValue(['features']);
|
|
39
|
-
if (currentFramework) return null;
|
|
40
|
-
return features?.breakingChangesV7 || features?.storyStoreV7 || semver.gte(storybookCoerced, '7.0.0') ? {
|
|
41
|
-
main,
|
|
42
|
-
framework: `@storybook/${framework}`
|
|
43
|
-
} : null;
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
prompt({
|
|
47
|
-
framework
|
|
48
|
-
}) {
|
|
49
|
-
const frameworkFormatted = chalk.cyan(`framework: '${framework}'`);
|
|
50
|
-
return dedent`
|
|
51
|
-
We've detected that your main.js configuration file does not specify the
|
|
52
|
-
'framework' field, which is a requirement in SB7.0 and above. We can add one
|
|
53
|
-
for you automatically:
|
|
54
|
-
|
|
55
|
-
${frameworkFormatted}
|
|
56
|
-
|
|
57
|
-
More info: ${chalk.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mainjs-framework-field')}
|
|
58
|
-
`;
|
|
59
|
-
},
|
|
60
|
-
|
|
61
|
-
async run({
|
|
62
|
-
result: {
|
|
63
|
-
main,
|
|
64
|
-
framework
|
|
65
|
-
},
|
|
66
|
-
dryRun
|
|
67
|
-
}) {
|
|
68
|
-
logger.info(`✅ Setting 'framework' to '${framework}' in main.js`);
|
|
69
|
-
|
|
70
|
-
if (!dryRun) {
|
|
71
|
-
main.setFieldValue(['framework'], framework);
|
|
72
|
-
await writeConfig(main);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
};
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import dedent from 'ts-dedent';
|
|
3
|
-
import semver from '@storybook/semver';
|
|
4
|
-
import { readConfig, writeConfig } from '@storybook/csf-tools';
|
|
5
|
-
import { getStorybookInfo } from '@storybook/core-common';
|
|
6
|
-
import { getStorybookVersionSpecifier } from '../../helpers';
|
|
7
|
-
const logger = console;
|
|
8
|
-
const packagesMap = {
|
|
9
|
-
'@storybook/react': {
|
|
10
|
-
webpack5: '@storybook/react-webpack5',
|
|
11
|
-
vite: '@storybook/react-vite'
|
|
12
|
-
},
|
|
13
|
-
'@storybook/preact': {
|
|
14
|
-
webpack5: '@storybook/preact-webpack5'
|
|
15
|
-
},
|
|
16
|
-
'@storybook/server': {
|
|
17
|
-
webpack5: '@storybook/server-webpack5'
|
|
18
|
-
},
|
|
19
|
-
'@storybook/angular': {
|
|
20
|
-
webpack5: '@storybook/angular'
|
|
21
|
-
},
|
|
22
|
-
'@storybook/vue': {
|
|
23
|
-
webpack5: '@storybook/vue-webpack5' // TODO: bring this back if we ever want to support vue 2 + vite. Else delete this!
|
|
24
|
-
// vite: '@storybook/vue-vite',
|
|
25
|
-
|
|
26
|
-
},
|
|
27
|
-
'@storybook/vue3': {
|
|
28
|
-
webpack5: '@storybook/vue3-webpack5',
|
|
29
|
-
vite: '@storybook/vue3-vite'
|
|
30
|
-
},
|
|
31
|
-
'@storybook/svelte': {
|
|
32
|
-
webpack5: '@storybook/svelte-webpack5',
|
|
33
|
-
// TODO: bring this back once we have the svelte-vite package
|
|
34
|
-
vite: '@storybook/svelte-vite'
|
|
35
|
-
},
|
|
36
|
-
'@storybook/web-components': {
|
|
37
|
-
webpack5: '@storybook/web-components-webpack5'
|
|
38
|
-
},
|
|
39
|
-
'@storybook/html': {
|
|
40
|
-
webpack5: '@storybook/html-webpack5'
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
export const getBuilder = builder => {
|
|
44
|
-
if (typeof builder === 'string') {
|
|
45
|
-
return builder.includes('vite') ? 'vite' : 'webpack5';
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return builder?.name.includes('vite') ? 'vite' : 'webpack5';
|
|
49
|
-
};
|
|
50
|
-
export const getFrameworkOptions = (framework, main) => {
|
|
51
|
-
const frameworkOptions = main.getFieldValue([`${framework}Options`]);
|
|
52
|
-
return frameworkOptions || {};
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* Does the user have separate framework and builders (e.g. @storybook/react + core.builder -> webpack5?
|
|
56
|
-
*
|
|
57
|
-
* If so:
|
|
58
|
-
* - Remove the dependencies (@storybook/react + @storybook/builder-webpack5 + @storybook/manager-webpack5)
|
|
59
|
-
* - Install the correct new package e.g. (@storybook/react-webpack5)
|
|
60
|
-
* - Update the main config to use the new framework
|
|
61
|
-
* -- moving core.builder into framework.options.builder
|
|
62
|
-
* -- moving frameworkOptions (e.g. reactOptions) into framework.options
|
|
63
|
-
*/
|
|
64
|
-
|
|
65
|
-
export const newFrameworks = {
|
|
66
|
-
id: 'newFrameworks',
|
|
67
|
-
|
|
68
|
-
async check({
|
|
69
|
-
packageManager
|
|
70
|
-
}) {
|
|
71
|
-
const packageJson = packageManager.retrievePackageJson();
|
|
72
|
-
const allDeps = Object.assign({}, packageJson.dependencies, packageJson.devDependencies); // FIXME: update to use renderer instead of framework
|
|
73
|
-
|
|
74
|
-
const {
|
|
75
|
-
mainConfig,
|
|
76
|
-
version: storybookVersion,
|
|
77
|
-
framework
|
|
78
|
-
} = getStorybookInfo(packageJson);
|
|
79
|
-
|
|
80
|
-
if (!mainConfig) {
|
|
81
|
-
logger.warn('Unable to find storybook main.js config, skipping');
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const storybookCoerced = storybookVersion && semver.coerce(storybookVersion)?.version;
|
|
86
|
-
|
|
87
|
-
if (!storybookCoerced) {
|
|
88
|
-
logger.warn(dedent`
|
|
89
|
-
❌ Unable to determine storybook version, skipping ${chalk.cyan('newFrameworks')} fix.
|
|
90
|
-
🤔 Are you running automigrate from your project directory?
|
|
91
|
-
`);
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (!semver.gte(storybookCoerced, '7.0.0')) {
|
|
96
|
-
return null;
|
|
97
|
-
} // If in the future the eslint plugin has a framework option, using main to extract the framework field will be very useful
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const main = await readConfig(mainConfig);
|
|
101
|
-
const frameworkPackage = main.getFieldValue(['framework']);
|
|
102
|
-
const builder = main.getFieldValue(['core', 'builder']);
|
|
103
|
-
|
|
104
|
-
if (!frameworkPackage) {
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const supportedPackages = Object.keys(packagesMap);
|
|
109
|
-
|
|
110
|
-
if (!supportedPackages.includes(frameworkPackage)) {
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
const builderInfo = {
|
|
115
|
-
name: getBuilder(builder),
|
|
116
|
-
options: main.getFieldValue(['core', 'builder', 'options']) || {}
|
|
117
|
-
};
|
|
118
|
-
const newFrameworkPackage = packagesMap[frameworkPackage][builderInfo.name]; // not all frameworks support vite yet e.g. Svelte
|
|
119
|
-
|
|
120
|
-
if (!newFrameworkPackage) {
|
|
121
|
-
return null;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
if (allDeps.vite && semver.lt(semver.coerce(allDeps.vite).version, '3.0.0')) {
|
|
125
|
-
logger.warn(dedent`
|
|
126
|
-
❌ Detected Vite ${allDeps.vite}, which is unsupported in Storybook 7.0, so the ${chalk.cyan('newFrameworks')} fix will be skipped.
|
|
127
|
-
Please upgrade vite to 3.0.0 or higher and rerun this automigration with "npx storybook@future automigrate".
|
|
128
|
-
`);
|
|
129
|
-
return null;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
const frameworkOptions = getFrameworkOptions(framework, main);
|
|
133
|
-
const dependenciesToRemove = ['@storybook/builder-webpack5', '@storybook/manager-webpack5', '@storybook/builder-webpack4', '@storybook/manager-webpack4', '@storybook/builder-vite', 'storybook-builder-vite'].filter(dep => allDeps[dep]);
|
|
134
|
-
const dependenciesToAdd = []; // some frameworks didn't change e.g. Angular, Ember
|
|
135
|
-
|
|
136
|
-
if (newFrameworkPackage !== frameworkPackage) {
|
|
137
|
-
dependenciesToRemove.push(frameworkPackage);
|
|
138
|
-
dependenciesToAdd.push(newFrameworkPackage);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
return {
|
|
142
|
-
main,
|
|
143
|
-
dependenciesToAdd,
|
|
144
|
-
dependenciesToRemove,
|
|
145
|
-
frameworkPackage: newFrameworkPackage,
|
|
146
|
-
frameworkOptions,
|
|
147
|
-
builderInfo,
|
|
148
|
-
packageJson
|
|
149
|
-
};
|
|
150
|
-
},
|
|
151
|
-
|
|
152
|
-
prompt() {
|
|
153
|
-
return dedent`
|
|
154
|
-
We've detected you are using an older format of Storybook frameworks and builders.
|
|
155
|
-
|
|
156
|
-
In Storybook 7, frameworks also specify the builder to be used.
|
|
157
|
-
|
|
158
|
-
We can remove the dependencies that are no longer needed and install the new framework that already includes the builder.
|
|
159
|
-
|
|
160
|
-
To learn more about the framework field, see: ${chalk.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-field-mandatory')}
|
|
161
|
-
|
|
162
|
-
${chalk.underline(chalk.bold(chalk.cyan('Webpack4 users')))}
|
|
163
|
-
|
|
164
|
-
Unless you're using Storybook's Vite builder, this automigration will install a Webpack5-based framework.
|
|
165
|
-
|
|
166
|
-
If you were using Storybook's Webpack4 builder (default in 6.x, discontinued in 7.0), this could be a breaking
|
|
167
|
-
change--especially if your project has a custom webpack configuration.
|
|
168
|
-
|
|
169
|
-
To learn more about migrating from Webpack4, see: ${chalk.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack4-support-discontinued')}
|
|
170
|
-
`;
|
|
171
|
-
},
|
|
172
|
-
|
|
173
|
-
async run({
|
|
174
|
-
result: {
|
|
175
|
-
dependenciesToAdd,
|
|
176
|
-
dependenciesToRemove,
|
|
177
|
-
main,
|
|
178
|
-
frameworkPackage,
|
|
179
|
-
frameworkOptions,
|
|
180
|
-
builderInfo,
|
|
181
|
-
packageJson
|
|
182
|
-
},
|
|
183
|
-
packageManager,
|
|
184
|
-
dryRun
|
|
185
|
-
}) {
|
|
186
|
-
logger.info(`✅ Removing legacy dependencies: ${dependenciesToRemove.join(', ')}`);
|
|
187
|
-
|
|
188
|
-
if (!dryRun) {
|
|
189
|
-
packageManager.removeDependencies({
|
|
190
|
-
skipInstall: dependenciesToAdd.length > 0,
|
|
191
|
-
packageJson
|
|
192
|
-
}, dependenciesToRemove);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
if (dependenciesToAdd.length > 0) {
|
|
196
|
-
logger.info(`✅ Installing new dependencies: ${dependenciesToAdd.join(', ')}`);
|
|
197
|
-
|
|
198
|
-
if (!dryRun) {
|
|
199
|
-
const versionToInstall = getStorybookVersionSpecifier(packageJson);
|
|
200
|
-
const depsToAdd = dependenciesToAdd.map(dep => `${dep}@${versionToInstall}`);
|
|
201
|
-
packageManager.addDependencies({
|
|
202
|
-
installAsDevDependencies: true
|
|
203
|
-
}, depsToAdd);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
if (!dryRun) {
|
|
208
|
-
logger.info(`✅ Updating framework field in main.js`);
|
|
209
|
-
const currentCore = main.getFieldValue(['core']);
|
|
210
|
-
main.setFieldValue(['framework', 'name'], frameworkPackage);
|
|
211
|
-
main.setFieldValue(['framework', 'options'], frameworkOptions);
|
|
212
|
-
|
|
213
|
-
if (currentCore?.builder) {
|
|
214
|
-
delete currentCore.builder;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
if (Object.keys(builderInfo.options).length > 0) {
|
|
218
|
-
main.setFieldValue(['framework', 'options', 'builder'], builderInfo.options);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
if (currentCore) {
|
|
222
|
-
if (Object.keys(currentCore).length === 0) {
|
|
223
|
-
// TODO: this should delete the field instead
|
|
224
|
-
main.setFieldValue(['core'], {});
|
|
225
|
-
} else {
|
|
226
|
-
main.setFieldValue(['core'], currentCore);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
await writeConfig(main);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
};
|