@storybook/cli 6.4.0-beta.3 → 6.4.0-beta.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/dist/cjs/automigrate/fixes/angular12.js +79 -0
- package/dist/cjs/automigrate/fixes/cra5.js +79 -0
- package/dist/cjs/automigrate/fixes/eslint-plugin.js +128 -0
- package/dist/cjs/automigrate/fixes/index.js +35 -0
- package/dist/cjs/automigrate/fixes/mainjsFramework.js +89 -0
- package/dist/cjs/automigrate/fixes/webpack5.js +156 -0
- package/dist/cjs/automigrate/helpers/getEslintInfo.js +28 -0
- package/dist/cjs/automigrate/helpers/getStorybookConfiguration.js +27 -0
- package/dist/cjs/automigrate/helpers/getStorybookInfo.js +94 -0
- package/dist/cjs/automigrate/index.js +78 -0
- package/dist/cjs/automigrate/types.js +1 -0
- package/dist/cjs/extract.js +3 -0
- package/dist/cjs/frameworks/web-components/js/Button.js +1 -1
- package/dist/cjs/frameworks/web-components/ts/Button.ts +1 -1
- package/dist/cjs/generate.js +11 -2
- package/dist/cjs/generators/ANGULAR/index.js +1 -1
- package/dist/cjs/generators/AURELIA/index.js +1 -1
- package/dist/cjs/generators/REACT_NATIVE/index.js +2 -2
- package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/index.js +1 -1
- package/dist/cjs/generators/REACT_SCRIPTS/index.js +1 -1
- package/dist/cjs/generators/SERVER/index.js +1 -1
- package/dist/cjs/generators/baseGenerator.js +3 -1
- package/dist/cjs/helpers.js +3 -11
- package/dist/cjs/initiate.js +10 -22
- package/dist/cjs/project_types.js +1 -10
- package/dist/cjs/repro-generators/configs.js +6 -1
- package/dist/cjs/upgrade.js +39 -5
- package/dist/cjs/versions.json +57 -55
- package/dist/esm/automigrate/fixes/angular12.js +79 -0
- package/dist/esm/automigrate/fixes/cra5.js +79 -0
- package/dist/esm/automigrate/fixes/eslint-plugin.js +128 -0
- package/dist/esm/automigrate/fixes/index.js +35 -0
- package/dist/esm/automigrate/fixes/mainjsFramework.js +89 -0
- package/dist/esm/automigrate/fixes/webpack5.js +156 -0
- package/dist/esm/automigrate/helpers/getEslintInfo.js +28 -0
- package/dist/esm/automigrate/helpers/getStorybookConfiguration.js +27 -0
- package/dist/esm/automigrate/helpers/getStorybookInfo.js +94 -0
- package/dist/esm/automigrate/index.js +78 -0
- package/dist/esm/automigrate/types.js +1 -0
- package/dist/esm/extract.js +3 -0
- package/dist/esm/frameworks/web-components/js/Button.js +1 -1
- package/dist/esm/frameworks/web-components/ts/Button.ts +1 -1
- package/dist/esm/generate.js +11 -2
- package/dist/esm/generators/ANGULAR/index.js +1 -1
- package/dist/esm/generators/AURELIA/index.js +1 -1
- package/dist/esm/generators/REACT_NATIVE/index.js +2 -2
- package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/index.js +1 -1
- package/dist/esm/generators/REACT_SCRIPTS/index.js +1 -1
- package/dist/esm/generators/SERVER/index.js +1 -1
- package/dist/esm/generators/baseGenerator.js +3 -1
- package/dist/esm/helpers.js +3 -11
- package/dist/esm/initiate.js +10 -22
- package/dist/esm/project_types.js +1 -10
- package/dist/esm/repro-generators/configs.js +6 -1
- package/dist/esm/upgrade.js +39 -5
- package/dist/esm/versions.json +57 -55
- package/dist/modern/automigrate/fixes/angular12.js +79 -0
- package/dist/modern/automigrate/fixes/cra5.js +79 -0
- package/dist/modern/automigrate/fixes/eslint-plugin.js +128 -0
- package/dist/modern/automigrate/fixes/index.js +35 -0
- package/dist/modern/automigrate/fixes/mainjsFramework.js +89 -0
- package/dist/modern/automigrate/fixes/webpack5.js +156 -0
- package/dist/modern/automigrate/helpers/getEslintInfo.js +28 -0
- package/dist/modern/automigrate/helpers/getStorybookConfiguration.js +27 -0
- package/dist/modern/automigrate/helpers/getStorybookInfo.js +94 -0
- package/dist/modern/automigrate/index.js +78 -0
- package/dist/modern/automigrate/types.js +1 -0
- package/dist/modern/extract.js +3 -0
- package/dist/modern/frameworks/web-components/js/Button.js +1 -1
- package/dist/modern/generate.js +11 -2
- package/dist/modern/generators/ANGULAR/index.js +1 -1
- package/dist/modern/generators/AURELIA/index.js +1 -1
- package/dist/modern/generators/REACT_NATIVE/index.js +2 -2
- package/dist/modern/generators/REACT_NATIVE/template-csf/storybook/index.js +1 -1
- package/dist/modern/generators/REACT_SCRIPTS/index.js +1 -1
- package/dist/modern/generators/SERVER/index.js +1 -1
- package/dist/modern/generators/baseGenerator.js +3 -1
- package/dist/modern/helpers.js +3 -11
- package/dist/modern/initiate.js +10 -22
- package/dist/modern/project_types.js +1 -10
- package/dist/modern/repro-generators/configs.js +6 -1
- package/dist/modern/upgrade.js +39 -5
- package/dist/modern/versions.json +57 -55
- package/dist/ts3.4/automigrate/fixes/angular12.d.ts +15 -0
- package/dist/ts3.4/automigrate/fixes/cra5.d.ts +15 -0
- package/dist/ts3.4/automigrate/fixes/eslint-plugin.d.ts +15 -0
- package/dist/ts3.4/automigrate/fixes/index.d.ts +3 -0
- package/dist/ts3.4/automigrate/fixes/mainjsFramework.d.ts +8 -0
- package/dist/ts3.4/automigrate/fixes/webpack5.d.ts +26 -0
- package/dist/ts3.4/automigrate/helpers/getEslintInfo.d.ts +2 -0
- package/dist/ts3.4/automigrate/helpers/getStorybookConfiguration.d.ts +1 -0
- package/dist/ts3.4/automigrate/helpers/getStorybookInfo.d.ts +11 -0
- package/dist/ts3.4/automigrate/index.d.ts +7 -0
- package/dist/ts3.4/automigrate/types.d.ts +15 -0
- package/dist/ts3.4/generators/REACT_NATIVE/index.d.ts +1 -2
- package/dist/ts3.4/generators/baseGenerator.d.ts +1 -2
- package/dist/ts3.4/helpers.d.ts +2 -2
- package/dist/ts3.4/initiate.d.ts +1 -2
- package/dist/ts3.4/project_types.d.ts +0 -7
- package/dist/ts3.4/repro-generators/configs.d.ts +1 -0
- package/dist/ts3.4/upgrade.d.ts +7 -3
- package/dist/ts3.9/automigrate/fixes/angular12.d.ts +15 -0
- package/dist/ts3.9/automigrate/fixes/cra5.d.ts +15 -0
- package/dist/ts3.9/automigrate/fixes/eslint-plugin.d.ts +15 -0
- package/dist/ts3.9/automigrate/fixes/index.d.ts +3 -0
- package/dist/ts3.9/automigrate/fixes/mainjsFramework.d.ts +8 -0
- package/dist/ts3.9/automigrate/fixes/webpack5.d.ts +26 -0
- package/dist/ts3.9/automigrate/helpers/getEslintInfo.d.ts +2 -0
- package/dist/ts3.9/automigrate/helpers/getStorybookConfiguration.d.ts +1 -0
- package/dist/ts3.9/automigrate/helpers/getStorybookInfo.d.ts +11 -0
- package/dist/ts3.9/automigrate/index.d.ts +7 -0
- package/dist/ts3.9/automigrate/types.d.ts +15 -0
- package/dist/ts3.9/generators/REACT_NATIVE/index.d.ts +1 -2
- package/dist/ts3.9/generators/baseGenerator.d.ts +1 -2
- package/dist/ts3.9/helpers.d.ts +2 -2
- package/dist/ts3.9/initiate.d.ts +1 -2
- package/dist/ts3.9/project_types.d.ts +0 -7
- package/dist/ts3.9/repro-generators/configs.d.ts +1 -0
- package/dist/ts3.9/upgrade.d.ts +7 -3
- package/package.json +7 -6
- package/story.js +0 -10
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.findEslintFile = exports.SUPPORTED_ESLINT_EXTENSIONS = void 0;
|
|
7
|
+
|
|
8
|
+
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
const SUPPORTED_ESLINT_EXTENSIONS = ['js', 'cjs'];
|
|
13
|
+
exports.SUPPORTED_ESLINT_EXTENSIONS = SUPPORTED_ESLINT_EXTENSIONS;
|
|
14
|
+
const UNSUPPORTED_ESLINT_EXTENSIONS = ['yaml', 'yml', 'json'];
|
|
15
|
+
|
|
16
|
+
const findEslintFile = () => {
|
|
17
|
+
const filePrefix = '.eslintrc';
|
|
18
|
+
const unsupportedExtension = UNSUPPORTED_ESLINT_EXTENSIONS.find(ext => _fsExtra.default.existsSync(`${filePrefix}.${ext}`));
|
|
19
|
+
|
|
20
|
+
if (unsupportedExtension) {
|
|
21
|
+
throw new Error(unsupportedExtension);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const extension = SUPPORTED_ESLINT_EXTENSIONS.find(ext => _fsExtra.default.existsSync(`${filePrefix}.${ext}`));
|
|
25
|
+
return extension ? `${filePrefix}.${extension}` : null;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
exports.findEslintFile = findEslintFile;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getStorybookConfiguration = getStorybookConfiguration;
|
|
7
|
+
|
|
8
|
+
/*
|
|
9
|
+
* Lifted from chromatic-cli
|
|
10
|
+
*
|
|
11
|
+
* This is not exactly clever but it works most of the time
|
|
12
|
+
* we receive the full text of the npm script, and we look if we can find the cli flag
|
|
13
|
+
*/
|
|
14
|
+
function getStorybookConfiguration(storybookScript, shortName, longName) {
|
|
15
|
+
const parts = storybookScript.split(/[\s='"]+/);
|
|
16
|
+
let index = parts.indexOf(longName);
|
|
17
|
+
|
|
18
|
+
if (index === -1) {
|
|
19
|
+
index = parts.indexOf(shortName);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (index === -1) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return parts[index + 1];
|
|
27
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getStorybookInfo = void 0;
|
|
7
|
+
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
|
|
10
|
+
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
11
|
+
|
|
12
|
+
var _getStorybookConfiguration = require("./getStorybookConfiguration");
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
const viewLayers = {
|
|
17
|
+
'@storybook/react': 'react',
|
|
18
|
+
'@storybook/vue': 'vue',
|
|
19
|
+
'@storybook/vue3': 'vue3',
|
|
20
|
+
'@storybook/angular': 'angular',
|
|
21
|
+
'@storybook/html': 'html',
|
|
22
|
+
'@storybook/web-components': 'web-components',
|
|
23
|
+
'@storybook/polymer': 'polymer',
|
|
24
|
+
'@storybook/ember': 'ember',
|
|
25
|
+
'@storybook/marko': 'marko',
|
|
26
|
+
'@storybook/mithril': 'mithril',
|
|
27
|
+
'@storybook/riot': 'riot',
|
|
28
|
+
'@storybook/svelte': 'svelte',
|
|
29
|
+
'@storybook/preact': 'preact',
|
|
30
|
+
'@storybook/rax': 'rax'
|
|
31
|
+
};
|
|
32
|
+
const logger = console;
|
|
33
|
+
|
|
34
|
+
const findDependency = ({
|
|
35
|
+
dependencies,
|
|
36
|
+
devDependencies,
|
|
37
|
+
peerDependencies
|
|
38
|
+
}, predicate) => [Object.entries(dependencies || {}).find(predicate), Object.entries(devDependencies || {}).find(predicate), Object.entries(peerDependencies || {}).find(predicate)];
|
|
39
|
+
|
|
40
|
+
const getFrameworkInfo = packageJson => {
|
|
41
|
+
// Pull the viewlayer from dependencies in package.json
|
|
42
|
+
const [dep, devDep, peerDep] = findDependency(packageJson, ([key]) => viewLayers[key]);
|
|
43
|
+
const [pkg, version] = dep || devDep || peerDep || [];
|
|
44
|
+
const framework = viewLayers[pkg];
|
|
45
|
+
|
|
46
|
+
if (dep && devDep && dep[0] === devDep[0]) {
|
|
47
|
+
logger.warn(`Found "${dep[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (dep && peerDep && dep[0] === peerDep[0]) {
|
|
51
|
+
logger.warn(`Found "${dep[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return {
|
|
55
|
+
framework,
|
|
56
|
+
version
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const validConfigExtensions = ['ts', 'js', 'tsx', 'jsx', 'mjs', 'cjs'];
|
|
61
|
+
|
|
62
|
+
const findConfigFile = (prefix, configDir) => {
|
|
63
|
+
const filePrefix = _path.default.join(configDir, prefix);
|
|
64
|
+
|
|
65
|
+
const extension = validConfigExtensions.find(ext => _fsExtra.default.existsSync(`${filePrefix}.${ext}`));
|
|
66
|
+
return extension ? `${filePrefix}.${extension}` : null;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const getConfigInfo = packageJson => {
|
|
70
|
+
var _packageJson$scripts;
|
|
71
|
+
|
|
72
|
+
let configDir = '.storybook';
|
|
73
|
+
const storybookScript = (_packageJson$scripts = packageJson.scripts) === null || _packageJson$scripts === void 0 ? void 0 : _packageJson$scripts.storybook;
|
|
74
|
+
|
|
75
|
+
if (storybookScript) {
|
|
76
|
+
const configParam = (0, _getStorybookConfiguration.getStorybookConfiguration)(storybookScript, '-c', '--config-dir');
|
|
77
|
+
if (configParam) configDir = configParam;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return {
|
|
81
|
+
configDir,
|
|
82
|
+
mainConfig: findConfigFile('main', configDir),
|
|
83
|
+
previewConfig: findConfigFile('preview', configDir),
|
|
84
|
+
managerConfig: findConfigFile('manager', configDir)
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const getStorybookInfo = packageJson => {
|
|
89
|
+
const frameworkInfo = getFrameworkInfo(packageJson);
|
|
90
|
+
const configInfo = getConfigInfo(packageJson);
|
|
91
|
+
return Object.assign({}, frameworkInfo, configInfo);
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
exports.getStorybookInfo = getStorybookInfo;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.automigrate = void 0;
|
|
7
|
+
|
|
8
|
+
require("core-js/modules/es.promise.js");
|
|
9
|
+
|
|
10
|
+
var _prompts = _interopRequireDefault(require("prompts"));
|
|
11
|
+
|
|
12
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
13
|
+
|
|
14
|
+
var _boxen = _interopRequireDefault(require("boxen"));
|
|
15
|
+
|
|
16
|
+
var _jsPackageManager = require("../js-package-manager");
|
|
17
|
+
|
|
18
|
+
var _fixes = require("./fixes");
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
/* eslint-disable no-await-in-loop */
|
|
23
|
+
const logger = console;
|
|
24
|
+
|
|
25
|
+
const automigrate = async ({
|
|
26
|
+
fixId,
|
|
27
|
+
dryRun,
|
|
28
|
+
yes
|
|
29
|
+
} = {}) => {
|
|
30
|
+
const packageManager = _jsPackageManager.JsPackageManagerFactory.getPackageManager();
|
|
31
|
+
|
|
32
|
+
const filtered = fixId ? _fixes.fixes.filter(f => f.id === fixId) : _fixes.fixes;
|
|
33
|
+
|
|
34
|
+
for (let i = 0; i < filtered.length; i += 1) {
|
|
35
|
+
const f = _fixes.fixes[i];
|
|
36
|
+
logger.info(`🔎 checking '${_chalk.default.cyan(f.id)}'`);
|
|
37
|
+
const result = await f.check({
|
|
38
|
+
packageManager
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
if (result) {
|
|
42
|
+
const message = f.prompt(result);
|
|
43
|
+
logger.info((0, _boxen.default)(message, {
|
|
44
|
+
borderStyle: 'round',
|
|
45
|
+
padding: 1,
|
|
46
|
+
borderColor: '#F1618C'
|
|
47
|
+
}));
|
|
48
|
+
const runAnswer = yes || dryRun ? {
|
|
49
|
+
fix: false
|
|
50
|
+
} : await (0, _prompts.default)([{
|
|
51
|
+
type: 'confirm',
|
|
52
|
+
name: 'fix',
|
|
53
|
+
message: `Do you want to run the '${_chalk.default.cyan(f.id)}' fix on your project?`
|
|
54
|
+
}]);
|
|
55
|
+
|
|
56
|
+
if (runAnswer.fix) {
|
|
57
|
+
try {
|
|
58
|
+
await f.run({
|
|
59
|
+
result,
|
|
60
|
+
packageManager,
|
|
61
|
+
dryRun
|
|
62
|
+
});
|
|
63
|
+
logger.info(`✅ fixed ${_chalk.default.cyan(f.id)}`);
|
|
64
|
+
} catch (error) {
|
|
65
|
+
logger.info(`❌ error in ${_chalk.default.cyan(f.id)}:`);
|
|
66
|
+
logger.info(error.message);
|
|
67
|
+
logger.info();
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
logger.info(`Skipping the ${_chalk.default.cyan(f.id)} fix.`);
|
|
71
|
+
logger.info();
|
|
72
|
+
logger.info(`If you change your mind, run '${_chalk.default.cyan('npx sb@next automigrate')}'`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
exports.automigrate = automigrate;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
package/dist/modern/extract.js
CHANGED
package/dist/modern/generate.js
CHANGED
|
@@ -28,6 +28,8 @@ var _repro = require("./repro");
|
|
|
28
28
|
|
|
29
29
|
var _link = require("./link");
|
|
30
30
|
|
|
31
|
+
var _automigrate = require("./automigrate");
|
|
32
|
+
|
|
31
33
|
var _babelConfig = require("./babel-config");
|
|
32
34
|
|
|
33
35
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -37,13 +39,13 @@ const pkg = (0, _readPkgUp.sync)({
|
|
|
37
39
|
}).packageJson;
|
|
38
40
|
const logger = console;
|
|
39
41
|
|
|
40
|
-
_commander.default.command('init').description('Initialize Storybook into your project.').option('-f --force', 'Force add Storybook').option('-s --skip-install', 'Skip installing deps').option('-N --use-npm', 'Use npm to install deps').option('-p --parser <babel | babylon | flow | ts | tsx>', 'jscodeshift parser').option('-t --type <type>', 'Add Storybook for a specific project type').option('
|
|
42
|
+
_commander.default.command('init').description('Initialize Storybook into your project.').option('-f --force', 'Force add Storybook').option('-s --skip-install', 'Skip installing deps').option('-N --use-npm', 'Use npm to install deps').option('-p --parser <babel | babylon | flow | ts | tsx>', 'jscodeshift parser').option('-t --type <type>', 'Add Storybook for a specific project type').option('-y --yes', 'Answer yes to all prompts').option('-b --builder <builder>', 'Builder library').option('-l --linkable', 'Prepare installation for link (contributor helper)').action(options => (0, _initiate.initiate)(options, pkg));
|
|
41
43
|
|
|
42
44
|
_commander.default.command('add <addon>').description('Add an addon to your Storybook').option('-N --use-npm', 'Use NPM to build the Storybook server').option('-s --skip-postinstall', 'Skip package specific postinstall config modifications').action((addonName, options) => (0, _add.add)(addonName, options));
|
|
43
45
|
|
|
44
46
|
_commander.default.command('babelrc').description('generate the default storybook babel config into your current working directory').action(() => (0, _babelConfig.generateStorybookBabelConfigInCWD)());
|
|
45
47
|
|
|
46
|
-
_commander.default.command('upgrade').description('Upgrade your Storybook packages to the latest').option('-N --use-npm', 'Use NPM to build the Storybook server').option('-n --dry-run', 'Only check for upgrades, do not install').option('-p --prerelease', 'Upgrade to the pre-release packages').option('-s --skip-check', 'Skip postinstall version
|
|
48
|
+
_commander.default.command('upgrade').description('Upgrade your Storybook packages to the latest').option('-N --use-npm', 'Use NPM to build the Storybook server').option('-y --yes', 'Skip prompting the user').option('-n --dry-run', 'Only check for upgrades, do not install').option('-p --prerelease', 'Upgrade to the pre-release packages').option('-s --skip-check', 'Skip postinstall version and automigration checks').action(options => (0, _upgrade.upgrade)(options));
|
|
47
49
|
|
|
48
50
|
_commander.default.command('info').description('Prints debugging information about the local environment').action(() => {
|
|
49
51
|
logger.log(_chalk.default.bold('\nEnvironment Info:'));
|
|
@@ -114,6 +116,13 @@ _commander.default.command('link <repo-url-or-directory>').description('Pull dow
|
|
|
114
116
|
process.exit(1);
|
|
115
117
|
}));
|
|
116
118
|
|
|
119
|
+
_commander.default.command('automigrate [fixId]').description('Check storybook for known problems or migrations and apply fixes').option('-y --yes', 'Skip prompting the user').option('-n --dry-run', 'Only check for fixes, do not actually run them').action((fixId, options) => (0, _automigrate.automigrate)(Object.assign({
|
|
120
|
+
fixId
|
|
121
|
+
}, options)).catch(e => {
|
|
122
|
+
logger.error(e);
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}));
|
|
125
|
+
|
|
117
126
|
_commander.default.on('command:*', ([invalidCmd]) => {
|
|
118
127
|
logger.error(' Invalid command: %s.\n See --help for a list of available commands.', invalidCmd); // eslint-disable-next-line
|
|
119
128
|
|
|
@@ -59,7 +59,7 @@ const generator = async (packageManager, npmOptions, options) => {
|
|
|
59
59
|
extraPackages: ['@compodoc/compodoc', '@angular/elements', '@webcomponents/custom-elements'],
|
|
60
60
|
addScripts: false
|
|
61
61
|
});
|
|
62
|
-
(0, _helpers.copyTemplate)(__dirname
|
|
62
|
+
(0, _helpers.copyTemplate)(__dirname);
|
|
63
63
|
editAngularAppTsConfig();
|
|
64
64
|
(0, _angularHelpers.editStorybookTsConfig)(_path.default.resolve('./.storybook/tsconfig.json')); // edit scripts to generate docs
|
|
65
65
|
|
|
@@ -36,7 +36,7 @@ const generator = async (packageManager, npmOptions, options) => {
|
|
|
36
36
|
(0, _baseGenerator.baseGenerator)(packageManager, npmOptions, options, 'aurelia', {
|
|
37
37
|
extraPackages: ['aurelia']
|
|
38
38
|
});
|
|
39
|
-
(0, _helpers.copyTemplate)(__dirname
|
|
39
|
+
(0, _helpers.copyTemplate)(__dirname);
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
var _default = generator;
|
|
@@ -15,7 +15,7 @@ var _helpers = require("../../helpers");
|
|
|
15
15
|
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
18
|
-
const generator = async (packageManager, npmOptions, installServer
|
|
18
|
+
const generator = async (packageManager, npmOptions, installServer) => {
|
|
19
19
|
// set correct project name on entry files if possible
|
|
20
20
|
const dirname = _shelljs.default.ls('-d', 'ios/*.xcodeproj').stdout; // Only notify about app name if running in React Native vanilla (Expo projects do not have ios directory)
|
|
21
21
|
|
|
@@ -50,7 +50,7 @@ const generator = async (packageManager, npmOptions, installServer, options) =>
|
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
(0, _helpers.copyTemplate)(__dirname
|
|
53
|
+
(0, _helpers.copyTemplate)(__dirname);
|
|
54
54
|
};
|
|
55
55
|
|
|
56
56
|
var _default = generator;
|
|
@@ -14,7 +14,7 @@ configure(() => {
|
|
|
14
14
|
require('./stories');
|
|
15
15
|
}, module);
|
|
16
16
|
|
|
17
|
-
// Refer to https://github.com/storybookjs/
|
|
17
|
+
// Refer to https://github.com/storybookjs/react-native/tree/master/app/react-native#getstorybookui-options
|
|
18
18
|
// To find allowed options for getStorybookUI
|
|
19
19
|
const StorybookUIRoot = getStorybookUI({});
|
|
20
20
|
|
|
@@ -37,7 +37,7 @@ const generator = async (packageManager, npmOptions, options) => {
|
|
|
37
37
|
} : {};
|
|
38
38
|
const craVersion = (_semver$coerce = _semver.default.coerce(packageManager.retrievePackageJson().dependencies['react-scripts'])) === null || _semver$coerce === void 0 ? void 0 : _semver$coerce.version;
|
|
39
39
|
|
|
40
|
-
const isCra5 = _semver.default.gte(craVersion, '5.0.0');
|
|
40
|
+
const isCra5 = craVersion && _semver.default.gte(craVersion, '5.0.0');
|
|
41
41
|
|
|
42
42
|
const updatedOptions = isCra5 ? Object.assign({}, options, {
|
|
43
43
|
builder: _project_types.CoreBuilder.Webpack5
|
|
@@ -15,7 +15,7 @@ const generator = async (packageManager, npmOptions, options) => {
|
|
|
15
15
|
(0, _baseGenerator.baseGenerator)(packageManager, npmOptions, options, 'server', {
|
|
16
16
|
extensions: ['json']
|
|
17
17
|
});
|
|
18
|
-
(0, _helpers.copyTemplate)(__dirname
|
|
18
|
+
(0, _helpers.copyTemplate)(__dirname);
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
var _default = generator;
|
|
@@ -76,7 +76,8 @@ async function baseGenerator(packageManager, npmOptions, {
|
|
|
76
76
|
const isNewFolder = !files.some(fname => fname.startsWith('.babel') || fname.startsWith('babel') || fname === 'package.json');
|
|
77
77
|
const packageJson = packageManager.retrievePackageJson();
|
|
78
78
|
const installedDependencies = new Set(Object.keys(packageJson.dependencies));
|
|
79
|
-
const
|
|
79
|
+
const frameworkPackage = `@storybook/${framework}`;
|
|
80
|
+
const packages = [frameworkPackage, ...addonPackages, ...extraPackages, ...extraAddons, ...yarn2Dependencies, ...builderDependencies(builder)].filter(Boolean).filter(packageToInstall => !installedDependencies.has((0, _jsPackageManager.getPackageDetails)(packageToInstall)[0]));
|
|
80
81
|
const versionedPackages = await packageManager.getVersionedPackages(...packages);
|
|
81
82
|
const mainOptions = builder !== _project_types.CoreBuilder.Webpack4 ? Object.assign({
|
|
82
83
|
core: {
|
|
@@ -84,6 +85,7 @@ async function baseGenerator(packageManager, npmOptions, {
|
|
|
84
85
|
}
|
|
85
86
|
}, extraMain) : extraMain;
|
|
86
87
|
(0, _configure.configure)(framework, Object.assign({
|
|
88
|
+
framework: frameworkPackage,
|
|
87
89
|
addons: [...addons, ...stripVersions(extraAddons)],
|
|
88
90
|
extensions,
|
|
89
91
|
commonJs: options.commonJs
|
package/dist/modern/helpers.js
CHANGED
|
@@ -28,8 +28,6 @@ var _semver = require("@storybook/semver");
|
|
|
28
28
|
|
|
29
29
|
var _stripJsonComments = _interopRequireDefault(require("strip-json-comments"));
|
|
30
30
|
|
|
31
|
-
var _project_types = require("./project_types");
|
|
32
|
-
|
|
33
31
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
34
32
|
|
|
35
33
|
/* eslint-disable no-param-reassign */
|
|
@@ -178,17 +176,11 @@ function addToDevDependenciesIfNotPresent(packageJson, name, packageVersion) {
|
|
|
178
176
|
}
|
|
179
177
|
}
|
|
180
178
|
|
|
181
|
-
function copyTemplate(templateRoot
|
|
182
|
-
const templateDir = _path.default.resolve(templateRoot, `template
|
|
179
|
+
function copyTemplate(templateRoot) {
|
|
180
|
+
const templateDir = _path.default.resolve(templateRoot, `template-csf/`);
|
|
183
181
|
|
|
184
182
|
if (!_fs.default.existsSync(templateDir)) {
|
|
185
|
-
|
|
186
|
-
if (storyFormat === _project_types.StoryFormat.CSF_TYPESCRIPT) {
|
|
187
|
-
copyTemplate(templateRoot, _project_types.StoryFormat.CSF);
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
throw new Error(`Unsupported story format: ${storyFormat}`);
|
|
183
|
+
throw new Error(`Couldn't find template dir`);
|
|
192
184
|
}
|
|
193
185
|
|
|
194
186
|
_fsExtra.default.copySync(templateDir, '.', {
|
package/dist/modern/initiate.js
CHANGED
|
@@ -63,10 +63,10 @@ var _RAX = _interopRequireDefault(require("./generators/RAX"));
|
|
|
63
63
|
|
|
64
64
|
var _SERVER = _interopRequireDefault(require("./generators/SERVER"));
|
|
65
65
|
|
|
66
|
-
var _warn = require("./warn");
|
|
67
|
-
|
|
68
66
|
var _jsPackageManager = require("./js-package-manager");
|
|
69
67
|
|
|
68
|
+
var _automigrate = require("./automigrate");
|
|
69
|
+
|
|
70
70
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
71
71
|
|
|
72
72
|
const logger = console;
|
|
@@ -79,13 +79,7 @@ const installStorybook = (projectType, options) => {
|
|
|
79
79
|
skipInstall: options.skipInstall
|
|
80
80
|
};
|
|
81
81
|
const language = (0, _detect.detectLanguage)();
|
|
82
|
-
const hasTSDependency = language === _project_types.SupportedLanguage.TYPESCRIPT;
|
|
83
|
-
(0, _warn.warn)({
|
|
84
|
-
hasTSDependency
|
|
85
|
-
});
|
|
86
|
-
const defaultStoryFormat = hasTSDependency ? _project_types.StoryFormat.CSF_TYPESCRIPT : _project_types.StoryFormat.CSF;
|
|
87
82
|
const generatorOptions = {
|
|
88
|
-
storyFormat: options.storyFormat || defaultStoryFormat,
|
|
89
83
|
language,
|
|
90
84
|
builder: options.builder || _project_types.CoreBuilder.Webpack4,
|
|
91
85
|
linkable: !!options.linkable,
|
|
@@ -138,7 +132,7 @@ const installStorybook = (projectType, options) => {
|
|
|
138
132
|
initial: false
|
|
139
133
|
}])).then(({
|
|
140
134
|
server
|
|
141
|
-
}) => (0, _REACT_NATIVE.default)(packageManager, npmOptions, server
|
|
135
|
+
}) => (0, _REACT_NATIVE.default)(packageManager, npmOptions, server)).then((0, _helpers.commandLog)('Adding Storybook support to your "React Native" app')).then(end).then(() => {
|
|
142
136
|
logger.log(_chalk.default.red('NOTE: installation is not 100% automated.'));
|
|
143
137
|
logger.log(`To quickly run Storybook, replace contents of your app entry with:\n`);
|
|
144
138
|
(0, _helpers.codeLog)(["export {default} from './storybook';"]);
|
|
@@ -250,7 +244,7 @@ const projectTypeInquirer = async options => {
|
|
|
250
244
|
return Promise.resolve();
|
|
251
245
|
};
|
|
252
246
|
|
|
253
|
-
function initiate(options, pkg) {
|
|
247
|
+
async function initiate(options, pkg) {
|
|
254
248
|
const welcomeMessage = 'sb init - the simplest way to add a Storybook to your project.';
|
|
255
249
|
logger.log(_chalk.default.inverse(`\n ${welcomeMessage} \n`)); // Update notify code.
|
|
256
250
|
|
|
@@ -261,18 +255,18 @@ function initiate(options, pkg) {
|
|
|
261
255
|
}).notify();
|
|
262
256
|
let projectType;
|
|
263
257
|
const projectTypeProvided = options.type;
|
|
264
|
-
const infoText = projectTypeProvided ?
|
|
258
|
+
const infoText = projectTypeProvided ? `Installing Storybook for user specified project type: ${projectTypeProvided}` : 'Detecting project type';
|
|
265
259
|
const done = (0, _helpers.commandLog)(infoText);
|
|
266
260
|
const packageJson = (0, _jsPackageManager.readPackageJson)();
|
|
267
261
|
const isEsm = packageJson && packageJson.type === 'module';
|
|
268
262
|
|
|
269
263
|
try {
|
|
270
264
|
if (projectTypeProvided) {
|
|
271
|
-
if (_project_types.installableProjectTypes.includes(
|
|
265
|
+
if (_project_types.installableProjectTypes.includes(projectTypeProvided)) {
|
|
272
266
|
const storybookInstalled = (0, _detect.isStorybookInstalled)(packageJson, options.force);
|
|
273
|
-
projectType = storybookInstalled ? _project_types.ProjectType.ALREADY_HAS_STORYBOOK :
|
|
267
|
+
projectType = storybookInstalled ? _project_types.ProjectType.ALREADY_HAS_STORYBOOK : projectTypeProvided.toUpperCase();
|
|
274
268
|
} else {
|
|
275
|
-
done(`The provided project type was not recognized by Storybook
|
|
269
|
+
done(`The provided project type was not recognized by Storybook: ${projectTypeProvided}`);
|
|
276
270
|
logger.log(`\nThe project types currently supported by Storybook are:\n`);
|
|
277
271
|
|
|
278
272
|
_project_types.installableProjectTypes.sort().forEach(framework => (0, _helpers.paddedLog)(`- ${framework}`));
|
|
@@ -289,14 +283,8 @@ function initiate(options, pkg) {
|
|
|
289
283
|
}
|
|
290
284
|
|
|
291
285
|
done();
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
if (options.storyFormat === _project_types.StoryFormat.MDX) {
|
|
295
|
-
logger.warn(' The MDX CLI template is deprecated. The JS and TS templates already include MDX examples!');
|
|
296
|
-
cleanOptions.storyFormat = undefined;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
return installStorybook(projectType, Object.assign({}, cleanOptions, isEsm ? {
|
|
286
|
+
await installStorybook(projectType, Object.assign({}, options, isEsm ? {
|
|
300
287
|
commonJs: true
|
|
301
288
|
} : undefined));
|
|
289
|
+
return (0, _automigrate.automigrate)();
|
|
302
290
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.installableProjectTypes = exports.unsupportedTemplate = exports.supportedTemplates = exports.SupportedLanguage = exports.CoreBuilder = exports.
|
|
6
|
+
exports.installableProjectTypes = exports.unsupportedTemplate = exports.supportedTemplates = exports.SupportedLanguage = exports.CoreBuilder = exports.SUPPORTED_FRAMEWORKS = exports.ProjectType = void 0;
|
|
7
7
|
|
|
8
8
|
var _semver = require("@storybook/semver");
|
|
9
9
|
|
|
@@ -52,15 +52,6 @@ exports.ProjectType = ProjectType;
|
|
|
52
52
|
|
|
53
53
|
const SUPPORTED_FRAMEWORKS = ['react', 'react-native', 'vue', 'vue3', 'angular', 'mithril', 'riot', 'ember', 'marionette', 'marko', 'meteor', 'preact', 'svelte', 'rax', 'aurelia'];
|
|
54
54
|
exports.SUPPORTED_FRAMEWORKS = SUPPORTED_FRAMEWORKS;
|
|
55
|
-
let StoryFormat;
|
|
56
|
-
exports.StoryFormat = StoryFormat;
|
|
57
|
-
|
|
58
|
-
(function (StoryFormat) {
|
|
59
|
-
StoryFormat["CSF"] = "csf";
|
|
60
|
-
StoryFormat["CSF_TYPESCRIPT"] = "csf-ts";
|
|
61
|
-
StoryFormat["MDX"] = "mdx";
|
|
62
|
-
})(StoryFormat || (exports.StoryFormat = StoryFormat = {}));
|
|
63
|
-
|
|
64
55
|
let CoreBuilder; // The `& {}` bit allows for auto-complete, see: https://github.com/microsoft/TypeScript/issues/29729
|
|
65
56
|
|
|
66
57
|
exports.CoreBuilder = CoreBuilder;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.svelte = exports.sfcVue = exports.preact = exports.html = exports.vue3 = exports.vue = exports.web_components_lit2 = exports.web_components_typescript = exports.web_components = exports.angular = exports.angular11 = exports.angular10 = exports.react_in_yarn_workspace = exports.webpack_react = exports.react_typescript = exports.react = exports.cra_typescript = exports.cra = void 0;
|
|
6
|
+
exports.svelte = exports.sfcVue = exports.preact = exports.html = exports.vue3 = exports.vue = exports.web_components_lit2 = exports.web_components_typescript = exports.web_components = exports.angular = exports.angular12 = exports.angular11 = exports.angular10 = exports.react_in_yarn_workspace = exports.webpack_react = exports.react_typescript = exports.react = exports.cra_typescript = exports.cra = void 0;
|
|
7
7
|
|
|
8
8
|
const fromDeps = (...args) => ['mkdir {{appName}}', 'cd {{appName}}', // Create `yarn.lock` to force Yarn to consider adding deps in this directory
|
|
9
9
|
// and not look for a yarn workspace in parent directory
|
|
@@ -74,6 +74,11 @@ const angular11 = Object.assign({}, baseAngular, {
|
|
|
74
74
|
version: 'v11-lts'
|
|
75
75
|
});
|
|
76
76
|
exports.angular11 = angular11;
|
|
77
|
+
const angular12 = Object.assign({}, baseAngular, {
|
|
78
|
+
name: 'angular12',
|
|
79
|
+
version: 'v12-lts'
|
|
80
|
+
});
|
|
81
|
+
exports.angular12 = angular12;
|
|
77
82
|
const angular = baseAngular; // #endregion
|
|
78
83
|
// #region web components
|
|
79
84
|
|
package/dist/modern/upgrade.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.upgrade = exports.checkVersionConsistency = exports.isCorePackage = exports.getStorybookVersion = void 0;
|
|
6
|
+
exports.upgrade = exports.addExtraFlags = exports.checkVersionConsistency = exports.isCorePackage = exports.getStorybookVersion = void 0;
|
|
7
7
|
|
|
8
8
|
require("core-js/modules/es.promise.js");
|
|
9
9
|
|
|
@@ -17,6 +17,8 @@ var _jsPackageManager = require("./js-package-manager");
|
|
|
17
17
|
|
|
18
18
|
var _helpers = require("./helpers");
|
|
19
19
|
|
|
20
|
+
var _automigrate = require("./automigrate");
|
|
21
|
+
|
|
20
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
23
|
|
|
22
24
|
const versionRegex = /(@storybook\/[^@]+)@(\S+)/;
|
|
@@ -57,6 +59,8 @@ const checkVersionConsistency = () => {
|
|
|
57
59
|
_nodeLogger.logger.warn('No storybook core packages found.');
|
|
58
60
|
|
|
59
61
|
_nodeLogger.logger.warn(`'npm ls | grep storybook' can show if multiple versions are installed.`);
|
|
62
|
+
|
|
63
|
+
return;
|
|
60
64
|
}
|
|
61
65
|
|
|
62
66
|
storybookPackages.sort((a, b) => _semver.default.rcompare(a.version, b.version));
|
|
@@ -91,21 +95,45 @@ const checkVersionConsistency = () => {
|
|
|
91
95
|
};
|
|
92
96
|
|
|
93
97
|
exports.checkVersionConsistency = checkVersionConsistency;
|
|
98
|
+
const EXTRA_FLAGS = {
|
|
99
|
+
'react-scripts@<5': ['--reject', '/preset-create-react-app/']
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
const addExtraFlags = (extraFlags, flags, {
|
|
103
|
+
dependencies,
|
|
104
|
+
devDependencies
|
|
105
|
+
}) => {
|
|
106
|
+
return Object.entries(extraFlags).reduce((acc, entry) => {
|
|
107
|
+
const [pattern, extra] = entry;
|
|
108
|
+
const [pkg, specifier] = (0, _jsPackageManager.getPackageDetails)(pattern);
|
|
109
|
+
const pkgVersion = dependencies[pkg] || devDependencies[pkg];
|
|
110
|
+
|
|
111
|
+
if (pkgVersion && _semver.default.satisfies(_semver.default.coerce(pkgVersion), specifier)) {
|
|
112
|
+
return [...acc, ...extra];
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return acc;
|
|
116
|
+
}, [...flags]);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
exports.addExtraFlags = addExtraFlags;
|
|
94
120
|
|
|
95
121
|
const upgrade = async ({
|
|
96
122
|
prerelease,
|
|
97
123
|
skipCheck,
|
|
98
124
|
useNpm,
|
|
99
|
-
dryRun
|
|
125
|
+
dryRun,
|
|
126
|
+
yes
|
|
100
127
|
}) => {
|
|
101
128
|
const packageManager = _jsPackageManager.JsPackageManagerFactory.getPackageManager(useNpm);
|
|
102
129
|
|
|
103
130
|
(0, _helpers.commandLog)(`Checking for latest versions of '@storybook/*' packages`);
|
|
104
|
-
|
|
131
|
+
let flags = [];
|
|
105
132
|
if (!dryRun) flags.push('--upgrade');
|
|
106
133
|
flags.push('--target');
|
|
107
134
|
flags.push(prerelease ? 'greatest' : 'latest');
|
|
108
|
-
|
|
135
|
+
flags = addExtraFlags(EXTRA_FLAGS, flags, packageManager.retrievePackageJson());
|
|
136
|
+
const check = (0, _crossSpawn.sync)('npx', ['npm-check-updates@latest', '/storybook/', ...flags], {
|
|
109
137
|
stdio: 'pipe'
|
|
110
138
|
}).output.toString();
|
|
111
139
|
|
|
@@ -116,7 +144,13 @@ const upgrade = async ({
|
|
|
116
144
|
packageManager.installDependencies();
|
|
117
145
|
}
|
|
118
146
|
|
|
119
|
-
if (!skipCheck)
|
|
147
|
+
if (!skipCheck) {
|
|
148
|
+
checkVersionConsistency();
|
|
149
|
+
await (0, _automigrate.automigrate)({
|
|
150
|
+
dryRun,
|
|
151
|
+
yes
|
|
152
|
+
});
|
|
153
|
+
}
|
|
120
154
|
};
|
|
121
155
|
|
|
122
156
|
exports.upgrade = upgrade;
|