@storybook/cli 7.0.0-alpha.31 → 7.0.0-alpha.33
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 +17 -11
- 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,19 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { TouchableHighlight } from 'react-native';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
children
|
|
7
|
-
}) {
|
|
8
|
-
return /*#__PURE__*/React.createElement(TouchableHighlight, {
|
|
9
|
-
onPress: onPress
|
|
10
|
-
}, children);
|
|
4
|
+
|
|
5
|
+
export default function Button({ onPress, children }) {
|
|
6
|
+
return <TouchableHighlight onPress={onPress}>{children}</TouchableHighlight>;
|
|
11
7
|
}
|
|
8
|
+
|
|
12
9
|
Button.defaultProps = {
|
|
13
10
|
children: null,
|
|
14
|
-
onPress: () => {}
|
|
11
|
+
onPress: () => {},
|
|
15
12
|
};
|
|
13
|
+
|
|
16
14
|
Button.propTypes = {
|
|
17
15
|
children: PropTypes.node,
|
|
18
|
-
onPress: PropTypes.func
|
|
19
|
-
};
|
|
16
|
+
onPress: PropTypes.func,
|
|
17
|
+
};
|
|
@@ -2,16 +2,15 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { View } from 'react-native';
|
|
4
4
|
import style from './style';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return /*#__PURE__*/React.createElement(View, {
|
|
9
|
-
style: style.main
|
|
10
|
-
}, children);
|
|
5
|
+
|
|
6
|
+
export default function CenterView({ children }) {
|
|
7
|
+
return <View style={style.main}>{children}</View>;
|
|
11
8
|
}
|
|
9
|
+
|
|
12
10
|
CenterView.defaultProps = {
|
|
13
|
-
children: null
|
|
11
|
+
children: null,
|
|
14
12
|
};
|
|
13
|
+
|
|
15
14
|
CenterView.propTypes = {
|
|
16
|
-
children: PropTypes.node
|
|
17
|
-
};
|
|
15
|
+
children: PropTypes.node,
|
|
16
|
+
};
|
|
@@ -2,6 +2,5 @@ import React from 'react';
|
|
|
2
2
|
import { linkTo } from '@storybook/addon-links';
|
|
3
3
|
import { storiesOf } from '@storybook/react-native';
|
|
4
4
|
import Welcome from '.';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}));
|
|
5
|
+
|
|
6
|
+
storiesOf('Welcome', module).add('to Storybook', () => <Welcome showApp={linkTo('Button')} />);
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { View, Text } from 'react-native';
|
|
4
|
+
|
|
5
|
+
export default class Welcome extends React.Component {
|
|
6
|
+
styles = {
|
|
7
|
+
wrapper: {
|
|
8
|
+
flex: 1,
|
|
9
|
+
padding: 24,
|
|
10
|
+
justifyContent: 'center',
|
|
11
|
+
},
|
|
12
|
+
header: {
|
|
13
|
+
fontSize: 18,
|
|
14
|
+
marginBottom: 18,
|
|
15
|
+
},
|
|
16
|
+
content: {
|
|
17
|
+
fontSize: 12,
|
|
18
|
+
marginBottom: 10,
|
|
19
|
+
lineHeight: 18,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
showApp = (event) => {
|
|
24
|
+
const { showApp } = this.props;
|
|
25
|
+
event.preventDefault();
|
|
26
|
+
|
|
27
|
+
if (showApp) {
|
|
28
|
+
showApp();
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
render() {
|
|
33
|
+
return (
|
|
34
|
+
<View style={this.styles.wrapper}>
|
|
35
|
+
<Text style={this.styles.header}>Welcome to React Native Storybook</Text>
|
|
36
|
+
<Text style={this.styles.content}>
|
|
37
|
+
This is a UI Component development environment for your React Native app. Here you can
|
|
38
|
+
display and interact with your UI components as stories. A story is a single state of one
|
|
39
|
+
or more UI components. You can have as many stories as you want. In other words a story is
|
|
40
|
+
like a visual test case.
|
|
41
|
+
</Text>
|
|
42
|
+
<Text style={this.styles.content}>
|
|
43
|
+
We have added some stories inside the "storybook/stories" directory for examples. Try
|
|
44
|
+
editing the "storybook/stories/Welcome.js" file to edit this message.
|
|
45
|
+
</Text>
|
|
46
|
+
</View>
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
Welcome.defaultProps = {
|
|
52
|
+
showApp: null,
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
Welcome.propTypes = {
|
|
56
|
+
showApp: PropTypes.func,
|
|
57
|
+
};
|
package/dist/cjs/NpmOptions.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
package/dist/cjs/add.js
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.add = add;
|
|
7
|
-
exports.storybookAddonScope = exports.getPackageName = exports.getPackageArg = exports.getInstalledStorybookVersion = exports.addStorybookAddonToFile = void 0;
|
|
8
|
-
|
|
9
|
-
var _path = _interopRequireDefault(require("path"));
|
|
10
|
-
|
|
11
|
-
var _fs = _interopRequireDefault(require("fs"));
|
|
12
|
-
|
|
13
|
-
var _crossSpawn = require("cross-spawn");
|
|
14
|
-
|
|
15
|
-
var _helpers = require("./helpers");
|
|
16
|
-
|
|
17
|
-
var _jsPackageManager = require("./js-package-manager");
|
|
18
|
-
|
|
19
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
|
-
|
|
21
|
-
const logger = console;
|
|
22
|
-
const storybookAddonScope = '@storybook/addon-';
|
|
23
|
-
exports.storybookAddonScope = storybookAddonScope;
|
|
24
|
-
|
|
25
|
-
const isAddon = async (packageManager, name) => {
|
|
26
|
-
try {
|
|
27
|
-
await packageManager.latestVersion(name);
|
|
28
|
-
return true;
|
|
29
|
-
} catch (e) {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
const isStorybookAddon = async (packageManager, name) => isAddon(packageManager, `${storybookAddonScope}${name}`);
|
|
35
|
-
|
|
36
|
-
const getPackageName = (addonName, isOfficialAddon) => isOfficialAddon ? storybookAddonScope + addonName : addonName;
|
|
37
|
-
|
|
38
|
-
exports.getPackageName = getPackageName;
|
|
39
|
-
|
|
40
|
-
const getInstalledStorybookVersion = packageJson => packageJson.devDependencies[// This only considers the first occurrence.
|
|
41
|
-
Object.keys(packageJson.devDependencies).find(devDep => /@storybook/.test(devDep))] || false;
|
|
42
|
-
|
|
43
|
-
exports.getInstalledStorybookVersion = getInstalledStorybookVersion;
|
|
44
|
-
|
|
45
|
-
const getPackageArg = (addonName, isOfficialAddon, packageJson) => {
|
|
46
|
-
if (isOfficialAddon) {
|
|
47
|
-
const addonNameNoTag = addonName.split('@')[0];
|
|
48
|
-
const installedStorybookVersion = getInstalledStorybookVersion(packageJson);
|
|
49
|
-
return installedStorybookVersion ? `${addonNameNoTag}@${getInstalledStorybookVersion(packageJson)}` : addonName;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return addonName;
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
exports.getPackageArg = getPackageArg;
|
|
56
|
-
|
|
57
|
-
const installAddon = (packageManager, addonName, isOfficialAddon) => {
|
|
58
|
-
const prepareDone = (0, _helpers.commandLog)(`Preparing to install the ${addonName} Storybook addon`);
|
|
59
|
-
prepareDone();
|
|
60
|
-
logger.log();
|
|
61
|
-
const packageArg = getPackageArg(addonName, isOfficialAddon, packageManager.retrievePackageJson());
|
|
62
|
-
logger.log();
|
|
63
|
-
const installDone = (0, _helpers.commandLog)(`Installing the ${addonName} Storybook addon`);
|
|
64
|
-
|
|
65
|
-
try {
|
|
66
|
-
packageManager.addDependencies({}, [packageArg]);
|
|
67
|
-
} catch (e) {
|
|
68
|
-
installDone(`Something went wrong installing the addon: "${getPackageName(addonName, isOfficialAddon)}"`);
|
|
69
|
-
logger.log();
|
|
70
|
-
process.exit(1);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
installDone();
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
const addStorybookAddonToFile = (addonName, addonsFile, isOfficialAddon) => {
|
|
77
|
-
const addonNameNoTag = addonName.split('@')[0];
|
|
78
|
-
const alreadyRegistered = addonsFile.find(line => line.includes(`${addonNameNoTag}/manager`));
|
|
79
|
-
|
|
80
|
-
if (alreadyRegistered) {
|
|
81
|
-
return addonsFile;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const latestImportIndex = addonsFile.reduce((prev, curr, currIndex) => curr.startsWith('import') && curr.includes('register') ? currIndex : prev, -1);
|
|
85
|
-
return [...addonsFile.slice(0, latestImportIndex + 1), `import '${getPackageName(addonNameNoTag, isOfficialAddon)}/manager';`, ...addonsFile.slice(latestImportIndex + 1)];
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
exports.addStorybookAddonToFile = addStorybookAddonToFile;
|
|
89
|
-
const LEGACY_CONFIGS = ['addons', 'config', 'presets'];
|
|
90
|
-
|
|
91
|
-
const postinstallAddon = async (addonName, isOfficialAddon) => {
|
|
92
|
-
let skipMsg = null;
|
|
93
|
-
|
|
94
|
-
if (!isOfficialAddon) {
|
|
95
|
-
skipMsg = 'unofficial addon';
|
|
96
|
-
} else if (!_fs.default.existsSync('.storybook')) {
|
|
97
|
-
skipMsg = 'no .storybook config';
|
|
98
|
-
} else {
|
|
99
|
-
skipMsg = 'no codmods found';
|
|
100
|
-
LEGACY_CONFIGS.forEach(config => {
|
|
101
|
-
try {
|
|
102
|
-
const codemod = require.resolve(`${getPackageName(addonName, isOfficialAddon)}/postinstall/${config}.js`);
|
|
103
|
-
|
|
104
|
-
(0, _helpers.commandLog)(`Running postinstall script for ${addonName}`)();
|
|
105
|
-
|
|
106
|
-
let configFile = _path.default.join('.storybook', `${config}.ts`);
|
|
107
|
-
|
|
108
|
-
if (!_fs.default.existsSync(configFile)) {
|
|
109
|
-
configFile = _path.default.join('.storybook', `${config}.js`);
|
|
110
|
-
|
|
111
|
-
if (!_fs.default.existsSync(configFile)) {
|
|
112
|
-
_fs.default.writeFileSync(configFile, '', 'utf8');
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
(0, _crossSpawn.sync)('npx', ['jscodeshift', '-t', codemod, configFile], {
|
|
117
|
-
stdio: 'inherit'
|
|
118
|
-
});
|
|
119
|
-
skipMsg = null;
|
|
120
|
-
} catch (err) {// resolve failed, skip
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
if (skipMsg) {
|
|
126
|
-
(0, _helpers.commandLog)(`Skipping postinstall for ${addonName}, ${skipMsg}`)();
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
async function add(addonName, options) {
|
|
131
|
-
const packageManager = _jsPackageManager.JsPackageManagerFactory.getPackageManager(options.useNpm);
|
|
132
|
-
|
|
133
|
-
const addonCheckDone = (0, _helpers.commandLog)(`Verifying that ${addonName} is an addon`);
|
|
134
|
-
const isOfficialAddon = await isStorybookAddon(packageManager, addonName);
|
|
135
|
-
|
|
136
|
-
if (!isOfficialAddon) {
|
|
137
|
-
if (!(await isAddon(packageManager, addonName))) {
|
|
138
|
-
addonCheckDone(`The provided package was not a Storybook addon: ${addonName}.`);
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
addonCheckDone();
|
|
144
|
-
installAddon(packageManager, addonName, isOfficialAddon);
|
|
145
|
-
|
|
146
|
-
if (!options.skipPostinstall) {
|
|
147
|
-
await postinstallAddon(addonName, isOfficialAddon);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.angular12 = void 0;
|
|
7
|
-
|
|
8
|
-
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
|
-
|
|
10
|
-
var _tsDedent = require("ts-dedent");
|
|
11
|
-
|
|
12
|
-
var _semver = _interopRequireDefault(require("@storybook/semver"));
|
|
13
|
-
|
|
14
|
-
var _webpack = require("./webpack5");
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Is the user upgrading to Angular12?
|
|
20
|
-
*
|
|
21
|
-
* If so:
|
|
22
|
-
* - Run webpack5 fix
|
|
23
|
-
*/
|
|
24
|
-
const angular12 = {
|
|
25
|
-
id: 'angular12',
|
|
26
|
-
|
|
27
|
-
async check({
|
|
28
|
-
packageManager
|
|
29
|
-
}) {
|
|
30
|
-
var _semver$coerce;
|
|
31
|
-
|
|
32
|
-
const packageJson = packageManager.retrievePackageJson();
|
|
33
|
-
const {
|
|
34
|
-
dependencies,
|
|
35
|
-
devDependencies
|
|
36
|
-
} = packageJson;
|
|
37
|
-
const angularVersion = dependencies['@angular/core'] || devDependencies['@angular/core'];
|
|
38
|
-
const angularCoerced = (_semver$coerce = _semver.default.coerce(angularVersion)) === null || _semver$coerce === void 0 ? void 0 : _semver$coerce.version;
|
|
39
|
-
|
|
40
|
-
if (!angularCoerced || _semver.default.lt(angularCoerced, '12.0.0')) {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const builderInfo = await _webpack.webpack5.checkWebpack5Builder(packageJson);
|
|
45
|
-
return builderInfo ? Object.assign({
|
|
46
|
-
angularVersion
|
|
47
|
-
}, builderInfo) : null;
|
|
48
|
-
},
|
|
49
|
-
|
|
50
|
-
prompt({
|
|
51
|
-
angularVersion
|
|
52
|
-
}) {
|
|
53
|
-
const angularFormatted = _chalk.default.cyan(`Angular ${angularVersion}`);
|
|
54
|
-
|
|
55
|
-
return (0, _tsDedent.dedent)`
|
|
56
|
-
We've detected you are running ${angularFormatted} which is powered by webpack5.
|
|
57
|
-
Your Storybook's main.js files specifies webpack4, which is incompatible.
|
|
58
|
-
|
|
59
|
-
In order to work with your version of Angular, we need to install Storybook's ${_chalk.default.cyan('@storybook/builder-webpack5')}.
|
|
60
|
-
|
|
61
|
-
More info: ${_chalk.default.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#angular12-upgrade')}
|
|
62
|
-
`;
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
async run(options) {
|
|
66
|
-
return _webpack.webpack5.run(Object.assign({}, options, {
|
|
67
|
-
result: Object.assign({
|
|
68
|
-
webpackVersion: null
|
|
69
|
-
}, options.result)
|
|
70
|
-
}));
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
};
|
|
74
|
-
exports.angular12 = angular12;
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.builderVite = void 0;
|
|
7
|
-
|
|
8
|
-
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
|
-
|
|
10
|
-
var _tsDedent = require("ts-dedent");
|
|
11
|
-
|
|
12
|
-
var _csfTools = require("@storybook/csf-tools");
|
|
13
|
-
|
|
14
|
-
var _coreCommon = require("@storybook/core-common");
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
|
-
const logger = console;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Is the user using 'storybook-builder-vite' in their project?
|
|
22
|
-
*
|
|
23
|
-
* If so, prompt them to upgrade to '@storybook/builder-vite'.
|
|
24
|
-
*
|
|
25
|
-
* - Add '@storybook/builder-vite' as dev dependency
|
|
26
|
-
* - Remove 'storybook-builder-vite' dependency
|
|
27
|
-
* - Add core.builder = '@storybook/builder-vite' to main.js
|
|
28
|
-
*/
|
|
29
|
-
const builderVite = {
|
|
30
|
-
id: 'builder-vite',
|
|
31
|
-
|
|
32
|
-
async check({
|
|
33
|
-
packageManager
|
|
34
|
-
}) {
|
|
35
|
-
const packageJson = packageManager.retrievePackageJson();
|
|
36
|
-
const {
|
|
37
|
-
mainConfig
|
|
38
|
-
} = (0, _coreCommon.getStorybookInfo)(packageJson);
|
|
39
|
-
|
|
40
|
-
if (!mainConfig) {
|
|
41
|
-
logger.warn('Unable to find storybook main.js config');
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const main = await (0, _csfTools.readConfig)(mainConfig);
|
|
46
|
-
const builder = main.getFieldValue(['core', 'builder']);
|
|
47
|
-
const builderName = typeof builder === 'string' ? builder : builder === null || builder === void 0 ? void 0 : builder.name;
|
|
48
|
-
|
|
49
|
-
if (builderName !== 'storybook-builder-vite') {
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return {
|
|
54
|
-
builder,
|
|
55
|
-
main,
|
|
56
|
-
packageJson
|
|
57
|
-
};
|
|
58
|
-
},
|
|
59
|
-
|
|
60
|
-
prompt({
|
|
61
|
-
builder
|
|
62
|
-
}) {
|
|
63
|
-
const builderFormatted = _chalk.default.cyan(JSON.stringify(builder, null, 2));
|
|
64
|
-
|
|
65
|
-
return (0, _tsDedent.dedent)`
|
|
66
|
-
We've detected you're using the community vite builder: ${builderFormatted}
|
|
67
|
-
|
|
68
|
-
'storybook-builder-vite' is deprecated and now located at ${_chalk.default.cyan('@storybook/builder-vite')}.
|
|
69
|
-
|
|
70
|
-
We can upgrade your project to use the new builder automatically.
|
|
71
|
-
|
|
72
|
-
More info: ${_chalk.default.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-renamed')}
|
|
73
|
-
`;
|
|
74
|
-
},
|
|
75
|
-
|
|
76
|
-
async run({
|
|
77
|
-
result: {
|
|
78
|
-
builder,
|
|
79
|
-
main,
|
|
80
|
-
packageJson
|
|
81
|
-
},
|
|
82
|
-
packageManager,
|
|
83
|
-
dryRun
|
|
84
|
-
}) {
|
|
85
|
-
const {
|
|
86
|
-
dependencies = {},
|
|
87
|
-
devDependencies = {}
|
|
88
|
-
} = packageJson;
|
|
89
|
-
logger.info(`Removing existing 'storybook-builder-vite' dependency`);
|
|
90
|
-
|
|
91
|
-
if (!dryRun) {
|
|
92
|
-
delete dependencies['storybook-builder-vite'];
|
|
93
|
-
delete devDependencies['storybook-builder-vite'];
|
|
94
|
-
packageManager.writePackageJson(packageJson);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
logger.info(`Adding '@storybook/builder-vite' as dev dependency`);
|
|
98
|
-
|
|
99
|
-
if (!dryRun) {
|
|
100
|
-
packageManager.addDependencies({
|
|
101
|
-
installAsDevDependencies: true
|
|
102
|
-
}, ['@storybook/builder-vite']);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
logger.info(`Updating main.js to use vite builder`);
|
|
106
|
-
|
|
107
|
-
if (!dryRun) {
|
|
108
|
-
const updatedBuilder = typeof builder === 'string' ? '@storybook/builder-vite' : {
|
|
109
|
-
name: '@storybook/builder-vite',
|
|
110
|
-
options: builder.options
|
|
111
|
-
};
|
|
112
|
-
main.setFieldValue(['core', 'builder'], updatedBuilder);
|
|
113
|
-
await (0, _csfTools.writeConfig)(main);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
};
|
|
118
|
-
exports.builderVite = builderVite;
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.cra5 = void 0;
|
|
7
|
-
|
|
8
|
-
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
|
-
|
|
10
|
-
var _tsDedent = require("ts-dedent");
|
|
11
|
-
|
|
12
|
-
var _semver = _interopRequireDefault(require("@storybook/semver"));
|
|
13
|
-
|
|
14
|
-
var _webpack = require("./webpack5");
|
|
15
|
-
|
|
16
|
-
const _excluded = ["craVersion"];
|
|
17
|
-
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
|
-
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; }
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Is the user upgrading from CRA4 to CRA5?
|
|
24
|
-
*
|
|
25
|
-
* If so:
|
|
26
|
-
* - Run webpack5 fix
|
|
27
|
-
*/
|
|
28
|
-
const cra5 = {
|
|
29
|
-
id: 'cra5',
|
|
30
|
-
|
|
31
|
-
async check({
|
|
32
|
-
packageManager
|
|
33
|
-
}) {
|
|
34
|
-
var _semver$coerce;
|
|
35
|
-
|
|
36
|
-
const packageJson = packageManager.retrievePackageJson();
|
|
37
|
-
const {
|
|
38
|
-
dependencies,
|
|
39
|
-
devDependencies
|
|
40
|
-
} = packageJson;
|
|
41
|
-
const craVersion = dependencies['react-scripts'] || devDependencies['react-scripts'];
|
|
42
|
-
const craCoerced = (_semver$coerce = _semver.default.coerce(craVersion)) === null || _semver$coerce === void 0 ? void 0 : _semver$coerce.version;
|
|
43
|
-
|
|
44
|
-
if (!craCoerced || _semver.default.lt(craCoerced, '5.0.0')) {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const builderInfo = await _webpack.webpack5.checkWebpack5Builder(packageJson);
|
|
49
|
-
return builderInfo ? Object.assign({
|
|
50
|
-
craVersion
|
|
51
|
-
}, builderInfo) : null;
|
|
52
|
-
},
|
|
53
|
-
|
|
54
|
-
prompt(_ref) {
|
|
55
|
-
let {
|
|
56
|
-
craVersion
|
|
57
|
-
} = _ref,
|
|
58
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
59
|
-
|
|
60
|
-
const craFormatted = _chalk.default.cyan(`Create React App (CRA) ${craVersion}`);
|
|
61
|
-
|
|
62
|
-
console.log(Object.assign({}, rest));
|
|
63
|
-
return (0, _tsDedent.dedent)`
|
|
64
|
-
We've detected you are running ${craFormatted} which is powered by webpack5.
|
|
65
|
-
Your Storybook's main.js files specifies webpack4, which is incompatible.
|
|
66
|
-
|
|
67
|
-
In order to work with your version of CRA, we need to install Storybook's ${_chalk.default.cyan('@storybook/builder-webpack5')}.
|
|
68
|
-
|
|
69
|
-
More info: ${_chalk.default.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#cra5-upgrade')}
|
|
70
|
-
`;
|
|
71
|
-
},
|
|
72
|
-
|
|
73
|
-
async run(options) {
|
|
74
|
-
return _webpack.webpack5.run(Object.assign({}, options, {
|
|
75
|
-
result: Object.assign({
|
|
76
|
-
webpackVersion: null
|
|
77
|
-
}, options.result)
|
|
78
|
-
}));
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
};
|
|
82
|
-
exports.cra5 = cra5;
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.eslintPlugin = void 0;
|
|
7
|
-
|
|
8
|
-
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
|
-
|
|
10
|
-
var _tsDedent = require("ts-dedent");
|
|
11
|
-
|
|
12
|
-
var _csfTools = require("@storybook/csf-tools");
|
|
13
|
-
|
|
14
|
-
var _coreCommon = require("@storybook/core-common");
|
|
15
|
-
|
|
16
|
-
var _getEslintInfo = require("../helpers/getEslintInfo");
|
|
17
|
-
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
|
-
const logger = console;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Does the user not have eslint-plugin-storybook installed?
|
|
24
|
-
*
|
|
25
|
-
* If so:
|
|
26
|
-
* - Install it, and if possible configure it
|
|
27
|
-
*/
|
|
28
|
-
const eslintPlugin = {
|
|
29
|
-
id: 'eslintPlugin',
|
|
30
|
-
|
|
31
|
-
async check({
|
|
32
|
-
packageManager
|
|
33
|
-
}) {
|
|
34
|
-
const packageJson = packageManager.retrievePackageJson();
|
|
35
|
-
const {
|
|
36
|
-
dependencies,
|
|
37
|
-
devDependencies
|
|
38
|
-
} = packageJson;
|
|
39
|
-
const eslintPluginStorybook = dependencies['eslint-plugin-storybook'] || devDependencies['eslint-plugin-storybook'];
|
|
40
|
-
const eslintDependency = dependencies.eslint || devDependencies.eslint;
|
|
41
|
-
|
|
42
|
-
if (eslintPluginStorybook || !eslintDependency) {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const {
|
|
47
|
-
mainConfig
|
|
48
|
-
} = (0, _coreCommon.getStorybookInfo)(packageJson);
|
|
49
|
-
|
|
50
|
-
if (!mainConfig) {
|
|
51
|
-
logger.warn('Unable to find storybook main.js config, skipping');
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
let eslintFile;
|
|
56
|
-
let unsupportedExtension;
|
|
57
|
-
|
|
58
|
-
try {
|
|
59
|
-
eslintFile = (0, _getEslintInfo.findEslintFile)();
|
|
60
|
-
} catch (err) {
|
|
61
|
-
unsupportedExtension = err.message;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (!eslintFile && !unsupportedExtension) {
|
|
65
|
-
logger.warn('Unable to find .eslintrc config file, skipping');
|
|
66
|
-
return null;
|
|
67
|
-
} // If in the future the eslint plugin has a framework option, using main to extract the framework field will be very useful
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const main = await (0, _csfTools.readConfig)(mainConfig);
|
|
71
|
-
return {
|
|
72
|
-
eslintFile,
|
|
73
|
-
main,
|
|
74
|
-
unsupportedExtension
|
|
75
|
-
};
|
|
76
|
-
},
|
|
77
|
-
|
|
78
|
-
prompt() {
|
|
79
|
-
return (0, _tsDedent.dedent)`
|
|
80
|
-
We've detected you are not using our eslint-plugin.
|
|
81
|
-
|
|
82
|
-
In order to have the best experience with Storybook and follow best practices, we advise you to install eslint-plugin-storybook.
|
|
83
|
-
|
|
84
|
-
More info: ${_chalk.default.yellow('https://github.com/storybookjs/eslint-plugin-storybook#readme')}
|
|
85
|
-
`;
|
|
86
|
-
},
|
|
87
|
-
|
|
88
|
-
async run({
|
|
89
|
-
result: {
|
|
90
|
-
eslintFile,
|
|
91
|
-
unsupportedExtension
|
|
92
|
-
},
|
|
93
|
-
packageManager,
|
|
94
|
-
dryRun
|
|
95
|
-
}) {
|
|
96
|
-
const deps = [`eslint-plugin-storybook`];
|
|
97
|
-
logger.info(`✅ Adding dependencies: ${deps}`);
|
|
98
|
-
if (!dryRun) packageManager.addDependencies({
|
|
99
|
-
installAsDevDependencies: true
|
|
100
|
-
}, deps);
|
|
101
|
-
|
|
102
|
-
if (!dryRun && unsupportedExtension) {
|
|
103
|
-
throw new Error((0, _tsDedent.dedent)`
|
|
104
|
-
⚠️ The plugin was successfuly installed but failed to configure.
|
|
105
|
-
|
|
106
|
-
Found an .eslintrc config file with an unsupported automigration format: ${unsupportedExtension}.
|
|
107
|
-
Supported formats for automigration are: ${_getEslintInfo.SUPPORTED_ESLINT_EXTENSIONS.join(', ')}.
|
|
108
|
-
|
|
109
|
-
Please refer to https://github.com/storybookjs/eslint-plugin-storybook#usage to finish setting up the plugin manually.
|
|
110
|
-
`);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const eslint = await (0, _csfTools.readConfig)(eslintFile);
|
|
114
|
-
logger.info(`✅ Configuring eslint rules in ${eslint.fileName}`);
|
|
115
|
-
|
|
116
|
-
if (!dryRun) {
|
|
117
|
-
logger.info(`✅ Adding Storybook to extends list`);
|
|
118
|
-
const extendsConfig = eslint.getFieldValue(['extends']) || [];
|
|
119
|
-
const existingConfigValue = Array.isArray(extendsConfig) ? extendsConfig : [extendsConfig];
|
|
120
|
-
eslint.setFieldValue(['extends'], [...existingConfigValue, 'plugin:storybook/recommended']);
|
|
121
|
-
await (0, _csfTools.writeConfig)(eslint);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
};
|
|
126
|
-
exports.eslintPlugin = eslintPlugin;
|