@storybook/cli 7.0.0-alpha.31 → 7.0.0-alpha.34

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