@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.
Files changed (254) hide show
  1. package/.eslintrc.js +35 -0
  2. package/bin/index.js +1 -1
  3. package/dist/generate.d.ts +1 -0
  4. package/dist/generate.js +265 -0
  5. package/dist/generate.mjs +265 -0
  6. package/package.json +17 -11
  7. package/{dist/cjs/generators/ANGULAR → templates/angular}/template-csf/.storybook/tsconfig.json +0 -0
  8. package/{dist/cjs/generators/ANGULAR → templates/angular}/template-csf/.storybook/typings.d.ts +0 -0
  9. package/{dist/cjs/generators/AURELIA → templates/aurelia}/template-csf/.storybook/tsconfig.json +0 -0
  10. package/{dist/cjs/generators/AURELIA → templates/aurelia}/template-csf/.storybook/typings.d.ts +0 -0
  11. package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/addons.js +1 -1
  12. package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/index.js +13 -6
  13. package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/rn-addons.js +1 -1
  14. package/templates/react-native/template-csf/storybook/stories/Button/Button.stories.js +20 -0
  15. package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/stories/Button/index.js +8 -10
  16. package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/stories/CenterView/index.js +8 -9
  17. package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/stories/CenterView/style.js +3 -3
  18. package/{dist/esm/generators/REACT_NATIVE → templates/react-native}/template-csf/storybook/stories/Welcome/Welcome.stories.js +2 -3
  19. package/templates/react-native/template-csf/storybook/stories/Welcome/index.js +57 -0
  20. package/templates/react-native/template-csf/storybook/stories/index.js +2 -0
  21. package/templates/server/template-csf/.storybook/preview.js +5 -0
  22. package/dist/cjs/NpmOptions.js +0 -1
  23. package/dist/cjs/add.js +0 -149
  24. package/dist/cjs/automigrate/fixes/angular12.js +0 -74
  25. package/dist/cjs/automigrate/fixes/builder-vite.js +0 -118
  26. package/dist/cjs/automigrate/fixes/cra5.js +0 -82
  27. package/dist/cjs/automigrate/fixes/eslint-plugin.js +0 -126
  28. package/dist/cjs/automigrate/fixes/index.js +0 -45
  29. package/dist/cjs/automigrate/fixes/mainjsFramework.js +0 -94
  30. package/dist/cjs/automigrate/fixes/new-frameworks.js +0 -258
  31. package/dist/cjs/automigrate/fixes/npm7.js +0 -57
  32. package/dist/cjs/automigrate/fixes/sb-scripts.js +0 -140
  33. package/dist/cjs/automigrate/fixes/vue3.js +0 -77
  34. package/dist/cjs/automigrate/fixes/webpack5.js +0 -151
  35. package/dist/cjs/automigrate/helpers/getEslintInfo.js +0 -28
  36. package/dist/cjs/automigrate/index.js +0 -98
  37. package/dist/cjs/automigrate/types.js +0 -5
  38. package/dist/cjs/babel-config.js +0 -65
  39. package/dist/cjs/build.js +0 -36
  40. package/dist/cjs/detect-nextjs.js +0 -33
  41. package/dist/cjs/detect-webpack.js +0 -39
  42. package/dist/cjs/detect.js +0 -179
  43. package/dist/cjs/dev.js +0 -66
  44. package/dist/cjs/dirs.js +0 -12
  45. package/dist/cjs/extract.js +0 -93
  46. package/dist/cjs/generate.js +0 -215
  47. package/dist/cjs/generators/ANGULAR/angular-helpers.js +0 -106
  48. package/dist/cjs/generators/ANGULAR/index.js +0 -95
  49. package/dist/cjs/generators/AURELIA/index.js +0 -41
  50. package/dist/cjs/generators/EMBER/index.js +0 -20
  51. package/dist/cjs/generators/HTML/index.js +0 -15
  52. package/dist/cjs/generators/MARIONETTE/index.js +0 -15
  53. package/dist/cjs/generators/MARKO/index.js +0 -15
  54. package/dist/cjs/generators/MITHRIL/index.js +0 -15
  55. package/dist/cjs/generators/PREACT/index.js +0 -15
  56. package/dist/cjs/generators/RAX/index.js +0 -28
  57. package/dist/cjs/generators/REACT/index.js +0 -15
  58. package/dist/cjs/generators/REACT_NATIVE/index.js +0 -55
  59. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/addons.js +0 -7
  60. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/index.js +0 -31
  61. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/rn-addons.js +0 -5
  62. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/Button/Button.stories.js +0 -23
  63. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/Button/index.js +0 -32
  64. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/CenterView/index.js +0 -31
  65. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/CenterView/style.js +0 -15
  66. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/Welcome/Welcome.stories.js +0 -15
  67. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/Welcome/index.js +0 -68
  68. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/stories/index.js +0 -5
  69. package/dist/cjs/generators/REACT_SCRIPTS/index.js +0 -68
  70. package/dist/cjs/generators/RIOT/index.js +0 -17
  71. package/dist/cjs/generators/SERVER/index.js +0 -20
  72. package/dist/cjs/generators/SERVER/template-csf/.storybook/preview.js +0 -12
  73. package/dist/cjs/generators/SFC_VUE/index.js +0 -15
  74. package/dist/cjs/generators/SVELTE/index.js +0 -59
  75. package/dist/cjs/generators/VUE/index.js +0 -17
  76. package/dist/cjs/generators/VUE3/index.js +0 -17
  77. package/dist/cjs/generators/WEB-COMPONENTS/index.js +0 -17
  78. package/dist/cjs/generators/WEBPACK_REACT/index.js +0 -15
  79. package/dist/cjs/generators/baseGenerator.js +0 -208
  80. package/dist/cjs/generators/configure.js +0 -83
  81. package/dist/cjs/generators/types.js +0 -5
  82. package/dist/cjs/helpers.js +0 -258
  83. package/dist/cjs/initiate.js +0 -295
  84. package/dist/cjs/js-package-manager/JsPackageManager.js +0 -358
  85. package/dist/cjs/js-package-manager/JsPackageManagerFactory.js +0 -71
  86. package/dist/cjs/js-package-manager/NPMProxy.js +0 -112
  87. package/dist/cjs/js-package-manager/PackageJson.js +0 -5
  88. package/dist/cjs/js-package-manager/Yarn1Proxy.js +0 -72
  89. package/dist/cjs/js-package-manager/Yarn2Proxy.js +0 -68
  90. package/dist/cjs/js-package-manager/index.js +0 -44
  91. package/dist/cjs/link.js +0 -99
  92. package/dist/cjs/migrate.js +0 -33
  93. package/dist/cjs/project_types.js +0 -263
  94. package/dist/cjs/repro-generators/configs.js +0 -201
  95. package/dist/cjs/repro-generators/scripts.js +0 -338
  96. package/dist/cjs/repro-next.js +0 -182
  97. package/dist/cjs/repro-templates.js +0 -103
  98. package/dist/cjs/repro.js +0 -194
  99. package/dist/cjs/typings.d.ts +0 -3
  100. package/dist/cjs/upgrade.js +0 -170
  101. package/dist/cjs/utils.js +0 -22
  102. package/dist/cjs/versions.js +0 -89
  103. package/dist/cjs/warn.js +0 -32
  104. package/dist/cjs/window.d.js +0 -5
  105. package/dist/esm/NpmOptions.js +0 -0
  106. package/dist/esm/add.js +0 -121
  107. package/dist/esm/automigrate/fixes/angular12.js +0 -58
  108. package/dist/esm/automigrate/fixes/builder-vite.js +0 -103
  109. package/dist/esm/automigrate/fixes/cra5.js +0 -66
  110. package/dist/esm/automigrate/fixes/eslint-plugin.js +0 -111
  111. package/dist/esm/automigrate/fixes/index.js +0 -12
  112. package/dist/esm/automigrate/fixes/mainjsFramework.js +0 -76
  113. package/dist/esm/automigrate/fixes/new-frameworks.js +0 -234
  114. package/dist/esm/automigrate/fixes/npm7.js +0 -45
  115. package/dist/esm/automigrate/fixes/sb-scripts.js +0 -119
  116. package/dist/esm/automigrate/fixes/vue3.js +0 -60
  117. package/dist/esm/automigrate/fixes/webpack5.js +0 -131
  118. package/dist/esm/automigrate/helpers/getEslintInfo.js +0 -14
  119. package/dist/esm/automigrate/index.js +0 -80
  120. package/dist/esm/automigrate/types.js +0 -1
  121. package/dist/esm/babel-config.js +0 -42
  122. package/dist/esm/build.js +0 -22
  123. package/dist/esm/detect-nextjs.js +0 -24
  124. package/dist/esm/detect-webpack.js +0 -30
  125. package/dist/esm/detect.js +0 -152
  126. package/dist/esm/dev.js +0 -47
  127. package/dist/esm/dirs.js +0 -4
  128. package/dist/esm/extract.js +0 -77
  129. package/dist/esm/generate.js +0 -162
  130. package/dist/esm/generators/ANGULAR/angular-helpers.js +0 -82
  131. package/dist/esm/generators/ANGULAR/index.js +0 -76
  132. package/dist/esm/generators/ANGULAR/template-csf/.storybook/tsconfig.json +0 -10
  133. package/dist/esm/generators/ANGULAR/template-csf/.storybook/typings.d.ts +0 -4
  134. package/dist/esm/generators/AURELIA/index.js +0 -32
  135. package/dist/esm/generators/AURELIA/template-csf/.storybook/tsconfig.json +0 -9
  136. package/dist/esm/generators/AURELIA/template-csf/.storybook/typings.d.ts +0 -4
  137. package/dist/esm/generators/EMBER/index.js +0 -12
  138. package/dist/esm/generators/HTML/index.js +0 -7
  139. package/dist/esm/generators/MARIONETTE/index.js +0 -7
  140. package/dist/esm/generators/MARKO/index.js +0 -7
  141. package/dist/esm/generators/MITHRIL/index.js +0 -7
  142. package/dist/esm/generators/PREACT/index.js +0 -7
  143. package/dist/esm/generators/RAX/index.js +0 -20
  144. package/dist/esm/generators/REACT/index.js +0 -7
  145. package/dist/esm/generators/REACT_NATIVE/index.js +0 -42
  146. package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/stories/Button/Button.stories.js +0 -12
  147. package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/stories/Welcome/index.js +0 -54
  148. package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/stories/index.js +0 -2
  149. package/dist/esm/generators/REACT_SCRIPTS/index.js +0 -49
  150. package/dist/esm/generators/RIOT/index.js +0 -9
  151. package/dist/esm/generators/SERVER/index.js +0 -11
  152. package/dist/esm/generators/SERVER/template-csf/.storybook/preview.js +0 -5
  153. package/dist/esm/generators/SFC_VUE/index.js +0 -7
  154. package/dist/esm/generators/SVELTE/index.js +0 -44
  155. package/dist/esm/generators/VUE/index.js +0 -9
  156. package/dist/esm/generators/VUE3/index.js +0 -9
  157. package/dist/esm/generators/WEB-COMPONENTS/index.js +0 -9
  158. package/dist/esm/generators/WEBPACK_REACT/index.js +0 -7
  159. package/dist/esm/generators/baseGenerator.js +0 -191
  160. package/dist/esm/generators/configure.js +0 -69
  161. package/dist/esm/generators/types.js +0 -1
  162. package/dist/esm/helpers.js +0 -207
  163. package/dist/esm/initiate.js +0 -254
  164. package/dist/esm/js-package-manager/JsPackageManager.js +0 -334
  165. package/dist/esm/js-package-manager/JsPackageManagerFactory.js +0 -57
  166. package/dist/esm/js-package-manager/NPMProxy.js +0 -99
  167. package/dist/esm/js-package-manager/PackageJson.js +0 -1
  168. package/dist/esm/js-package-manager/Yarn1Proxy.js +0 -62
  169. package/dist/esm/js-package-manager/Yarn2Proxy.js +0 -58
  170. package/dist/esm/js-package-manager/index.js +0 -3
  171. package/dist/esm/link.js +0 -69
  172. package/dist/esm/migrate.js +0 -25
  173. package/dist/esm/project_types.js +0 -248
  174. package/dist/esm/repro-generators/configs.js +0 -174
  175. package/dist/esm/repro-generators/scripts.js +0 -307
  176. package/dist/esm/repro-next.js +0 -163
  177. package/dist/esm/repro-templates.js +0 -94
  178. package/dist/esm/repro.js +0 -170
  179. package/dist/esm/typings.d.ts +0 -3
  180. package/dist/esm/upgrade.js +0 -132
  181. package/dist/esm/utils.js +0 -13
  182. package/dist/esm/versions.js +0 -82
  183. package/dist/esm/warn.js +0 -16
  184. package/dist/esm/window.d.js +0 -1
  185. package/dist/types/NpmOptions.d.ts +0 -4
  186. package/dist/types/add.d.ts +0 -10
  187. package/dist/types/automigrate/fixes/angular12.d.ts +0 -15
  188. package/dist/types/automigrate/fixes/builder-vite.d.ts +0 -19
  189. package/dist/types/automigrate/fixes/cra5.d.ts +0 -15
  190. package/dist/types/automigrate/fixes/eslint-plugin.d.ts +0 -15
  191. package/dist/types/automigrate/fixes/index.d.ts +0 -3
  192. package/dist/types/automigrate/fixes/mainjsFramework.d.ts +0 -8
  193. package/dist/types/automigrate/fixes/new-frameworks.d.ts +0 -31
  194. package/dist/types/automigrate/fixes/npm7.d.ts +0 -9
  195. package/dist/types/automigrate/fixes/sb-scripts.d.ts +0 -23
  196. package/dist/types/automigrate/fixes/vue3.d.ts +0 -15
  197. package/dist/types/automigrate/fixes/webpack5.d.ts +0 -26
  198. package/dist/types/automigrate/helpers/getEslintInfo.d.ts +0 -2
  199. package/dist/types/automigrate/index.d.ts +0 -7
  200. package/dist/types/automigrate/types.d.ts +0 -15
  201. package/dist/types/babel-config.d.ts +0 -4
  202. package/dist/types/build.d.ts +0 -1
  203. package/dist/types/detect-nextjs.d.ts +0 -2
  204. package/dist/types/detect-webpack.d.ts +0 -2
  205. package/dist/types/detect.d.ts +0 -16
  206. package/dist/types/dev.d.ts +0 -1
  207. package/dist/types/dirs.d.ts +0 -1
  208. package/dist/types/extract.d.ts +0 -1
  209. package/dist/types/generate.d.ts +0 -1
  210. package/dist/types/generators/ANGULAR/angular-helpers.d.ts +0 -6
  211. package/dist/types/generators/ANGULAR/index.d.ts +0 -3
  212. package/dist/types/generators/AURELIA/index.d.ts +0 -3
  213. package/dist/types/generators/EMBER/index.d.ts +0 -3
  214. package/dist/types/generators/HTML/index.d.ts +0 -3
  215. package/dist/types/generators/MARIONETTE/index.d.ts +0 -3
  216. package/dist/types/generators/MARKO/index.d.ts +0 -3
  217. package/dist/types/generators/MITHRIL/index.d.ts +0 -3
  218. package/dist/types/generators/PREACT/index.d.ts +0 -3
  219. package/dist/types/generators/RAX/index.d.ts +0 -3
  220. package/dist/types/generators/REACT/index.d.ts +0 -3
  221. package/dist/types/generators/REACT_NATIVE/index.d.ts +0 -4
  222. package/dist/types/generators/REACT_SCRIPTS/index.d.ts +0 -3
  223. package/dist/types/generators/RIOT/index.d.ts +0 -3
  224. package/dist/types/generators/SERVER/index.d.ts +0 -3
  225. package/dist/types/generators/SFC_VUE/index.d.ts +0 -3
  226. package/dist/types/generators/SVELTE/index.d.ts +0 -3
  227. package/dist/types/generators/VUE/index.d.ts +0 -3
  228. package/dist/types/generators/VUE3/index.d.ts +0 -3
  229. package/dist/types/generators/WEB-COMPONENTS/index.d.ts +0 -3
  230. package/dist/types/generators/WEBPACK_REACT/index.d.ts +0 -3
  231. package/dist/types/generators/baseGenerator.d.ts +0 -5
  232. package/dist/types/generators/configure.d.ts +0 -19
  233. package/dist/types/generators/types.d.ts +0 -38
  234. package/dist/types/helpers.d.ts +0 -26
  235. package/dist/types/initiate.d.ts +0 -3
  236. package/dist/types/js-package-manager/JsPackageManager.d.ts +0 -118
  237. package/dist/types/js-package-manager/JsPackageManagerFactory.d.ts +0 -4
  238. package/dist/types/js-package-manager/NPMProxy.d.ts +0 -23
  239. package/dist/types/js-package-manager/PackageJson.d.ts +0 -4
  240. package/dist/types/js-package-manager/Yarn1Proxy.d.ts +0 -17
  241. package/dist/types/js-package-manager/Yarn2Proxy.d.ts +0 -17
  242. package/dist/types/js-package-manager/index.d.ts +0 -3
  243. package/dist/types/link.d.ts +0 -7
  244. package/dist/types/migrate.d.ts +0 -1
  245. package/dist/types/project_types.d.ts +0 -64
  246. package/dist/types/repro-generators/configs.d.ts +0 -44
  247. package/dist/types/repro-generators/scripts.d.ts +0 -44
  248. package/dist/types/repro-next.d.ts +0 -8
  249. package/dist/types/repro-templates.d.ts +0 -73
  250. package/dist/types/repro.d.ts +0 -14
  251. package/dist/types/upgrade.d.ts +0 -19
  252. package/dist/types/utils.d.ts +0 -2
  253. package/dist/types/versions.d.ts +0 -82
  254. package/dist/types/warn.d.ts +0 -5
@@ -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
- }
@@ -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
- }