@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
package/dist/esm/helpers.js
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-param-reassign */
|
|
2
|
-
import path, { join } from 'path';
|
|
3
|
-
import fs from 'fs';
|
|
4
|
-
import fse from 'fs-extra';
|
|
5
|
-
import chalk from 'chalk';
|
|
6
|
-
import { satisfies } from '@storybook/semver';
|
|
7
|
-
import stripJsonComments from 'strip-json-comments';
|
|
8
|
-
import { getBaseDir } from './dirs';
|
|
9
|
-
import storybookMonorepoPackages from './versions';
|
|
10
|
-
const logger = console;
|
|
11
|
-
export function getBowerJson() {
|
|
12
|
-
const bowerJsonPath = path.resolve('bower.json');
|
|
13
|
-
|
|
14
|
-
if (!fs.existsSync(bowerJsonPath)) {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const jsonContent = fs.readFileSync(bowerJsonPath, 'utf8');
|
|
19
|
-
return JSON.parse(jsonContent);
|
|
20
|
-
}
|
|
21
|
-
export function readFileAsJson(jsonPath, allowComments) {
|
|
22
|
-
const filePath = path.resolve(jsonPath);
|
|
23
|
-
|
|
24
|
-
if (!fs.existsSync(filePath)) {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const fileContent = fs.readFileSync(filePath, 'utf8');
|
|
29
|
-
const jsonContent = allowComments ? stripJsonComments(fileContent) : fileContent;
|
|
30
|
-
|
|
31
|
-
try {
|
|
32
|
-
return JSON.parse(jsonContent);
|
|
33
|
-
} catch (e) {
|
|
34
|
-
logger.error(chalk.red(`Invalid json in file: ${filePath}`));
|
|
35
|
-
throw e;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
export const writeFileAsJson = (jsonPath, content) => {
|
|
39
|
-
const filePath = path.resolve(jsonPath);
|
|
40
|
-
|
|
41
|
-
if (!fs.existsSync(filePath)) {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
fs.writeFileSync(filePath, `${JSON.stringify(content, null, 2)}\n`);
|
|
46
|
-
return true;
|
|
47
|
-
};
|
|
48
|
-
export const commandLog = message => {
|
|
49
|
-
process.stdout.write(chalk.cyan(' • ') + message); // Need `void` to be able to use this function in a then of a Promise<void>
|
|
50
|
-
|
|
51
|
-
return (errorMessage, errorInfo) => {
|
|
52
|
-
if (errorMessage) {
|
|
53
|
-
process.stdout.write(`. ${chalk.red('✖')}\n`);
|
|
54
|
-
logger.error(`\n ${chalk.red(errorMessage)}`);
|
|
55
|
-
|
|
56
|
-
if (!errorInfo) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const newErrorInfo = errorInfo.split('\n').map(line => ` ${chalk.dim(line)}`).join('\n');
|
|
61
|
-
logger.error(`${newErrorInfo}\n`);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
process.stdout.write(`. ${chalk.green('✓')}\n`);
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
export function paddedLog(message) {
|
|
69
|
-
const newMessage = message.split('\n').map(line => ` ${line}`).join('\n');
|
|
70
|
-
logger.log(newMessage);
|
|
71
|
-
}
|
|
72
|
-
export function getChars(char, amount) {
|
|
73
|
-
let line = '';
|
|
74
|
-
|
|
75
|
-
for (let lc = 0; lc < amount; lc += 1) {
|
|
76
|
-
line += char;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return line;
|
|
80
|
-
}
|
|
81
|
-
export function codeLog(codeLines, leftPadAmount) {
|
|
82
|
-
let maxLength = 0;
|
|
83
|
-
const newLines = codeLines.map(line => {
|
|
84
|
-
maxLength = line.length > maxLength ? line.length : maxLength;
|
|
85
|
-
return line;
|
|
86
|
-
});
|
|
87
|
-
const finalResult = newLines.map(line => {
|
|
88
|
-
const rightPadAmount = maxLength - line.length;
|
|
89
|
-
let newLine = line + getChars(' ', rightPadAmount);
|
|
90
|
-
newLine = getChars(' ', leftPadAmount || 2) + chalk.inverse(` ${newLine} `);
|
|
91
|
-
return newLine;
|
|
92
|
-
}).join('\n');
|
|
93
|
-
logger.log(finalResult);
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Detect if any babel dependencies need to be added to the project
|
|
97
|
-
* @param {Object} packageJson The current package.json so we can inspect its contents
|
|
98
|
-
* @returns {Array} Contains the packages and versions that need to be installed
|
|
99
|
-
* @example
|
|
100
|
-
* const babelDependencies = await getBabelDependencies(packageManager, npmOptions, packageJson);
|
|
101
|
-
* // you can then spread the result when using installDependencies
|
|
102
|
-
* installDependencies(npmOptions, [
|
|
103
|
-
* `@storybook/react@${storybookVersion}`,
|
|
104
|
-
* ...babelDependencies,
|
|
105
|
-
* ]);
|
|
106
|
-
*/
|
|
107
|
-
|
|
108
|
-
export async function getBabelDependencies(packageManager, packageJson) {
|
|
109
|
-
const dependenciesToAdd = [];
|
|
110
|
-
let babelLoaderVersion = '^8.0.0-0';
|
|
111
|
-
const babelCoreVersion = packageJson.dependencies['babel-core'] || packageJson.devDependencies['babel-core'];
|
|
112
|
-
|
|
113
|
-
if (!babelCoreVersion) {
|
|
114
|
-
if (!packageJson.dependencies['@babel/core'] && !packageJson.devDependencies['@babel/core']) {
|
|
115
|
-
const babelCoreInstallVersion = await packageManager.getVersion('@babel/core');
|
|
116
|
-
dependenciesToAdd.push(`@babel/core@${babelCoreInstallVersion}`);
|
|
117
|
-
}
|
|
118
|
-
} else {
|
|
119
|
-
const latestCompatibleBabelVersion = await packageManager.latestVersion('babel-core', babelCoreVersion); // Babel 6
|
|
120
|
-
|
|
121
|
-
if (satisfies(latestCompatibleBabelVersion, '^6.0.0')) {
|
|
122
|
-
babelLoaderVersion = '^7.0.0';
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
if (!packageJson.dependencies['babel-loader'] && !packageJson.devDependencies['babel-loader']) {
|
|
127
|
-
const babelLoaderInstallVersion = await packageManager.getVersion('babel-loader', babelLoaderVersion);
|
|
128
|
-
dependenciesToAdd.push(`babel-loader@${babelLoaderInstallVersion}`);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return dependenciesToAdd;
|
|
132
|
-
}
|
|
133
|
-
export function addToDevDependenciesIfNotPresent(packageJson, name, packageVersion) {
|
|
134
|
-
if (!packageJson.dependencies[name] && !packageJson.devDependencies[name]) {
|
|
135
|
-
packageJson.devDependencies[name] = packageVersion;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
export function copyTemplate(templateRoot) {
|
|
139
|
-
const templateDir = path.resolve(templateRoot, `template-csf/`);
|
|
140
|
-
|
|
141
|
-
if (!fs.existsSync(templateDir)) {
|
|
142
|
-
throw new Error(`Couldn't find template dir`);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
fse.copySync(templateDir, '.', {
|
|
146
|
-
overwrite: true
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
export async function copyComponents(renderer, language) {
|
|
150
|
-
const languageFolderMapping = {
|
|
151
|
-
javascript: 'js',
|
|
152
|
-
typescript: 'ts'
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
const componentsPath = async () => {
|
|
156
|
-
const baseDir = getBaseDir();
|
|
157
|
-
const assetsRoot = join(baseDir, 'rendererAssets');
|
|
158
|
-
const assetsRenderer = join(assetsRoot, renderer);
|
|
159
|
-
const assetsLanguage = join(assetsRenderer, languageFolderMapping[language]);
|
|
160
|
-
|
|
161
|
-
if (await fse.pathExists(assetsLanguage)) {
|
|
162
|
-
return assetsLanguage;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
const assetsJS = join(assetsRenderer, languageFolderMapping.javascript);
|
|
166
|
-
|
|
167
|
-
if (await fse.pathExists(assetsJS)) {
|
|
168
|
-
return assetsJS;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
if (await fse.pathExists(assetsRenderer)) {
|
|
172
|
-
return assetsRenderer;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
throw new Error(`Unsupported renderer: ${renderer}`);
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
const targetPath = async () => {
|
|
179
|
-
if (await fse.pathExists('./src')) {
|
|
180
|
-
return './src/stories';
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
return './stories';
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
const destinationPath = await targetPath();
|
|
187
|
-
await fse.copy(await componentsPath(), destinationPath, {
|
|
188
|
-
overwrite: true
|
|
189
|
-
});
|
|
190
|
-
await fse.copy(join(getBaseDir(), 'rendererAssets/common'), destinationPath, {
|
|
191
|
-
overwrite: true
|
|
192
|
-
});
|
|
193
|
-
} // Given a package.json, finds any official storybook package within it
|
|
194
|
-
// and if it exists, returns the version of that package from the specified package.json
|
|
195
|
-
|
|
196
|
-
export function getStorybookVersionSpecifier(packageJson) {
|
|
197
|
-
const allDeps = Object.assign({}, packageJson.dependencies, packageJson.devDependencies);
|
|
198
|
-
const storybookPackage = Object.keys(allDeps).find(name => {
|
|
199
|
-
return storybookMonorepoPackages[name];
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
if (!storybookPackage) {
|
|
203
|
-
throw new Error(`Couldn't find any official storybook packages in package.json`);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
return allDeps[storybookPackage];
|
|
207
|
-
}
|
package/dist/esm/initiate.js
DELETED
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
import { UpdateNotifier } from 'update-notifier';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import prompts from 'prompts';
|
|
4
|
-
import { telemetry } from '@storybook/telemetry';
|
|
5
|
-
import { installableProjectTypes, ProjectType } from './project_types';
|
|
6
|
-
import { detect, isStorybookInstalled, detectLanguage, detectBuilder } from './detect';
|
|
7
|
-
import { commandLog, codeLog, paddedLog } from './helpers';
|
|
8
|
-
import angularGenerator from './generators/ANGULAR';
|
|
9
|
-
import aureliaGenerator from './generators/AURELIA';
|
|
10
|
-
import emberGenerator from './generators/EMBER';
|
|
11
|
-
import reactGenerator from './generators/REACT';
|
|
12
|
-
import reactNativeGenerator from './generators/REACT_NATIVE';
|
|
13
|
-
import reactScriptsGenerator from './generators/REACT_SCRIPTS';
|
|
14
|
-
import sfcVueGenerator from './generators/SFC_VUE';
|
|
15
|
-
import vueGenerator from './generators/VUE';
|
|
16
|
-
import vue3Generator from './generators/VUE3';
|
|
17
|
-
import webpackReactGenerator from './generators/WEBPACK_REACT';
|
|
18
|
-
import mithrilGenerator from './generators/MITHRIL';
|
|
19
|
-
import marionetteGenerator from './generators/MARIONETTE';
|
|
20
|
-
import markoGenerator from './generators/MARKO';
|
|
21
|
-
import htmlGenerator from './generators/HTML';
|
|
22
|
-
import webComponentsGenerator from './generators/WEB-COMPONENTS';
|
|
23
|
-
import riotGenerator from './generators/RIOT';
|
|
24
|
-
import preactGenerator from './generators/PREACT';
|
|
25
|
-
import svelteGenerator from './generators/SVELTE';
|
|
26
|
-
import raxGenerator from './generators/RAX';
|
|
27
|
-
import serverGenerator from './generators/SERVER';
|
|
28
|
-
import { JsPackageManagerFactory } from './js-package-manager';
|
|
29
|
-
import { automigrate } from './automigrate';
|
|
30
|
-
const logger = console;
|
|
31
|
-
|
|
32
|
-
const installStorybook = (projectType, packageManager, options) => {
|
|
33
|
-
const npmOptions = {
|
|
34
|
-
installAsDevDependencies: true,
|
|
35
|
-
skipInstall: options.skipInstall
|
|
36
|
-
};
|
|
37
|
-
let packageJson;
|
|
38
|
-
|
|
39
|
-
try {
|
|
40
|
-
packageJson = packageManager.readPackageJson();
|
|
41
|
-
} catch (err) {//
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const language = detectLanguage(packageJson);
|
|
45
|
-
const generatorOptions = {
|
|
46
|
-
language,
|
|
47
|
-
builder: options.builder || detectBuilder(packageManager),
|
|
48
|
-
linkable: !!options.linkable,
|
|
49
|
-
commonJs: options.commonJs,
|
|
50
|
-
pnp: options.usePnp
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
const runGenerator = async () => {
|
|
54
|
-
switch (projectType) {
|
|
55
|
-
case ProjectType.ALREADY_HAS_STORYBOOK:
|
|
56
|
-
logger.log();
|
|
57
|
-
paddedLog('There seems to be a Storybook already available in this project.');
|
|
58
|
-
paddedLog('Apply following command to force:\n');
|
|
59
|
-
codeLog(['sb init [options] -f']); // Add a new line for the clear visibility.
|
|
60
|
-
|
|
61
|
-
logger.log();
|
|
62
|
-
return Promise.resolve();
|
|
63
|
-
|
|
64
|
-
case ProjectType.REACT_SCRIPTS:
|
|
65
|
-
return reactScriptsGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Create React App" based project'));
|
|
66
|
-
|
|
67
|
-
case ProjectType.REACT:
|
|
68
|
-
return reactGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "React" app\n'));
|
|
69
|
-
|
|
70
|
-
case ProjectType.REACT_NATIVE:
|
|
71
|
-
{
|
|
72
|
-
return (options.yes ? Promise.resolve({
|
|
73
|
-
server: true
|
|
74
|
-
}) : prompts([{
|
|
75
|
-
type: 'confirm',
|
|
76
|
-
name: 'server',
|
|
77
|
-
message: 'Do you want to install dependencies necessary to run Storybook server? You can manually do it later by install @storybook/react-native-server',
|
|
78
|
-
initial: false
|
|
79
|
-
}])).then(({
|
|
80
|
-
server
|
|
81
|
-
}) => reactNativeGenerator(packageManager, npmOptions, server)).then(commandLog('Adding Storybook support to your "React Native" app\n'));
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
case ProjectType.WEBPACK_REACT:
|
|
85
|
-
return webpackReactGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Webpack React" app\n'));
|
|
86
|
-
|
|
87
|
-
case ProjectType.REACT_PROJECT:
|
|
88
|
-
return reactGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "React" library\n'));
|
|
89
|
-
|
|
90
|
-
case ProjectType.SFC_VUE:
|
|
91
|
-
return sfcVueGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Single File Components Vue" app\n'));
|
|
92
|
-
|
|
93
|
-
case ProjectType.VUE:
|
|
94
|
-
return vueGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Vue" app\n'));
|
|
95
|
-
|
|
96
|
-
case ProjectType.VUE3:
|
|
97
|
-
return vue3Generator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Vue 3" app\n'));
|
|
98
|
-
|
|
99
|
-
case ProjectType.ANGULAR:
|
|
100
|
-
return angularGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Angular" app\n'));
|
|
101
|
-
|
|
102
|
-
case ProjectType.EMBER:
|
|
103
|
-
return emberGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Ember" app\n'));
|
|
104
|
-
|
|
105
|
-
case ProjectType.MITHRIL:
|
|
106
|
-
return mithrilGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Mithril" app\n'));
|
|
107
|
-
|
|
108
|
-
case ProjectType.MARIONETTE:
|
|
109
|
-
return marionetteGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Marionette.js" app\n'));
|
|
110
|
-
|
|
111
|
-
case ProjectType.MARKO:
|
|
112
|
-
return markoGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Marko" app\n'));
|
|
113
|
-
|
|
114
|
-
case ProjectType.HTML:
|
|
115
|
-
return htmlGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "HTML" app\n'));
|
|
116
|
-
|
|
117
|
-
case ProjectType.WEB_COMPONENTS:
|
|
118
|
-
return webComponentsGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "web components" app\n'));
|
|
119
|
-
|
|
120
|
-
case ProjectType.RIOT:
|
|
121
|
-
return riotGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "riot.js" app\n'));
|
|
122
|
-
|
|
123
|
-
case ProjectType.PREACT:
|
|
124
|
-
return preactGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Preact" app\n'));
|
|
125
|
-
|
|
126
|
-
case ProjectType.SVELTE:
|
|
127
|
-
return svelteGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Svelte" app\n'));
|
|
128
|
-
|
|
129
|
-
case ProjectType.RAX:
|
|
130
|
-
return raxGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Rax" app\n'));
|
|
131
|
-
|
|
132
|
-
case ProjectType.AURELIA:
|
|
133
|
-
return aureliaGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Aurelia" app\n'));
|
|
134
|
-
|
|
135
|
-
case ProjectType.SERVER:
|
|
136
|
-
return serverGenerator(packageManager, npmOptions, generatorOptions).then(commandLog('Adding Storybook support to your "Server" app\n'));
|
|
137
|
-
|
|
138
|
-
case ProjectType.UNSUPPORTED:
|
|
139
|
-
paddedLog(`We detected a project type that we don't support yet.`);
|
|
140
|
-
paddedLog(`If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues`); // Add a new line for the clear visibility.
|
|
141
|
-
|
|
142
|
-
logger.log();
|
|
143
|
-
return Promise.resolve();
|
|
144
|
-
|
|
145
|
-
default:
|
|
146
|
-
paddedLog(`We couldn't detect your project type. (code: ${projectType})`);
|
|
147
|
-
paddedLog('You can specify a project type explicitly via `sb init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/react/get-started/install'); // Add a new line for the clear visibility.
|
|
148
|
-
|
|
149
|
-
logger.log();
|
|
150
|
-
return projectTypeInquirer(options, packageManager);
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
return runGenerator().catch(ex => {
|
|
155
|
-
logger.error(`\n ${chalk.red(ex.stack)}`);
|
|
156
|
-
process.exit(1);
|
|
157
|
-
});
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
const projectTypeInquirer = async (options, packageManager) => {
|
|
161
|
-
const manualAnswer = options.yes ? true : await prompts([{
|
|
162
|
-
type: 'confirm',
|
|
163
|
-
name: 'manual',
|
|
164
|
-
message: 'Do you want to manually choose a Storybook project type to install?'
|
|
165
|
-
}]);
|
|
166
|
-
|
|
167
|
-
if (manualAnswer !== true && manualAnswer.manual) {
|
|
168
|
-
const frameworkAnswer = await prompts([{
|
|
169
|
-
type: 'select',
|
|
170
|
-
name: 'manualFramework',
|
|
171
|
-
message: 'Please choose a project type from the following list:',
|
|
172
|
-
choices: installableProjectTypes.map(type => ({
|
|
173
|
-
title: type,
|
|
174
|
-
value: type.toUpperCase()
|
|
175
|
-
}))
|
|
176
|
-
}]);
|
|
177
|
-
return installStorybook(frameworkAnswer.manualFramework, packageManager, options);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
return Promise.resolve();
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
export async function initiate(options, pkg) {
|
|
184
|
-
const packageManager = JsPackageManagerFactory.getPackageManager(options.useNpm);
|
|
185
|
-
const welcomeMessage = 'storybook init - the simplest way to add a Storybook to your project.';
|
|
186
|
-
logger.log(chalk.inverse(`\n ${welcomeMessage} \n`));
|
|
187
|
-
|
|
188
|
-
if (!options.disableTelemetry) {
|
|
189
|
-
telemetry('init');
|
|
190
|
-
} // Update notify code.
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
new UpdateNotifier({
|
|
194
|
-
pkg,
|
|
195
|
-
updateCheckInterval: 1000 * 60 * 60 // every hour (we could increase this later on.)
|
|
196
|
-
|
|
197
|
-
}).notify();
|
|
198
|
-
let projectType;
|
|
199
|
-
const projectTypeProvided = options.type;
|
|
200
|
-
const infoText = projectTypeProvided ? `Installing Storybook for user specified project type: ${projectTypeProvided}` : 'Detecting project type';
|
|
201
|
-
const done = commandLog(infoText);
|
|
202
|
-
const packageJson = packageManager.retrievePackageJson();
|
|
203
|
-
const isEsm = packageJson && packageJson.type === 'module';
|
|
204
|
-
|
|
205
|
-
try {
|
|
206
|
-
if (projectTypeProvided) {
|
|
207
|
-
if (installableProjectTypes.includes(projectTypeProvided)) {
|
|
208
|
-
const storybookInstalled = isStorybookInstalled(packageJson, options.force);
|
|
209
|
-
projectType = storybookInstalled ? ProjectType.ALREADY_HAS_STORYBOOK : projectTypeProvided.toUpperCase();
|
|
210
|
-
} else {
|
|
211
|
-
done(`The provided project type was not recognized by Storybook: ${projectTypeProvided}`);
|
|
212
|
-
logger.log(`\nThe project types currently supported by Storybook are:\n`);
|
|
213
|
-
installableProjectTypes.sort().forEach(framework => paddedLog(`- ${framework}`));
|
|
214
|
-
logger.log();
|
|
215
|
-
process.exit(1);
|
|
216
|
-
}
|
|
217
|
-
} else {
|
|
218
|
-
projectType = detect(packageJson, options);
|
|
219
|
-
}
|
|
220
|
-
} catch (ex) {
|
|
221
|
-
done(ex.message);
|
|
222
|
-
process.exit(1);
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
done();
|
|
226
|
-
await installStorybook(projectType, packageManager, Object.assign({}, options, isEsm ? {
|
|
227
|
-
commonJs: true
|
|
228
|
-
} : undefined));
|
|
229
|
-
|
|
230
|
-
if (!options.skipInstall) {
|
|
231
|
-
packageManager.installDependencies();
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
await automigrate({
|
|
235
|
-
yes: options.yes || process.env.CI === 'true'
|
|
236
|
-
});
|
|
237
|
-
logger.log('\nTo run your Storybook, type:\n');
|
|
238
|
-
codeLog([packageManager.getRunStorybookCommand()]);
|
|
239
|
-
logger.log('\nFor more information visit:', chalk.cyan('https://storybook.js.org'));
|
|
240
|
-
|
|
241
|
-
if (projectType === ProjectType.REACT_NATIVE) {
|
|
242
|
-
const REACT_NATIVE_REPO = 'https://github.com/storybookjs/react-native';
|
|
243
|
-
logger.log();
|
|
244
|
-
logger.log(chalk.red('NOTE: installation is not 100% automated.'));
|
|
245
|
-
logger.log(`To quickly run Storybook, replace contents of your app entry with:\n`);
|
|
246
|
-
codeLog(["export {default} from './storybook';"]);
|
|
247
|
-
logger.log('\n For more in information, see the github readme:\n');
|
|
248
|
-
logger.log(chalk.cyan(REACT_NATIVE_REPO));
|
|
249
|
-
logger.log();
|
|
250
|
-
} // Add a new line for the clear visibility.
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
logger.log();
|
|
254
|
-
}
|