@storybook/cli 7.0.0-alpha.1 → 7.0.0-alpha.2
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/index.js +9 -3
- package/dist/cjs/babel-config.js +5 -4
- package/dist/cjs/frameworks/angular/Button.stories.ts +5 -3
- package/dist/cjs/generate.js +1 -1
- package/dist/cjs/generators/ANGULAR/index.js +24 -1
- package/dist/cjs/generators/baseGenerator.js +36 -36
- package/dist/cjs/generators/configure.js +16 -18
- package/dist/cjs/generators/types.js +5 -0
- package/dist/cjs/helpers.js +10 -12
- package/dist/cjs/initiate.js +2 -1
- package/dist/cjs/repro-generators/configs.js +22 -24
- package/dist/cjs/repro-generators/scripts.js +23 -13
- package/dist/cjs/versions.js +73 -73
- package/dist/esm/automigrate/index.js +9 -3
- package/dist/esm/babel-config.js +5 -4
- package/dist/esm/frameworks/angular/Button.stories.ts +5 -3
- package/dist/esm/generate.js +1 -1
- package/dist/esm/generators/ANGULAR/index.js +24 -1
- package/dist/esm/generators/baseGenerator.js +36 -36
- package/dist/esm/generators/configure.js +16 -18
- package/dist/esm/generators/types.js +5 -0
- package/dist/esm/helpers.js +10 -12
- package/dist/esm/initiate.js +2 -1
- package/dist/esm/repro-generators/configs.js +22 -24
- package/dist/esm/repro-generators/scripts.js +23 -13
- package/dist/esm/versions.js +73 -73
- package/dist/types/generators/ANGULAR/index.d.ts +1 -1
- package/dist/types/generators/AURELIA/index.d.ts +1 -1
- package/dist/types/generators/EMBER/index.d.ts +1 -1
- package/dist/types/generators/HTML/index.d.ts +1 -1
- package/dist/types/generators/MARIONETTE/index.d.ts +1 -1
- package/dist/types/generators/MARKO/index.d.ts +1 -1
- package/dist/types/generators/MITHRIL/index.d.ts +1 -1
- package/dist/types/generators/PREACT/index.d.ts +1 -1
- package/dist/types/generators/RAX/index.d.ts +1 -1
- package/dist/types/generators/REACT/index.d.ts +1 -1
- package/dist/types/generators/REACT_SCRIPTS/index.d.ts +1 -1
- package/dist/types/generators/RIOT/index.d.ts +1 -1
- package/dist/types/generators/SERVER/index.d.ts +1 -1
- package/dist/types/generators/SFC_VUE/index.d.ts +1 -1
- package/dist/types/generators/SVELTE/index.d.ts +1 -1
- package/dist/types/generators/VUE/index.d.ts +1 -1
- package/dist/types/generators/VUE3/index.d.ts +1 -1
- package/dist/types/generators/WEB-COMPONENTS/index.d.ts +1 -1
- package/dist/types/generators/WEBPACK_REACT/index.d.ts +1 -1
- package/dist/types/generators/baseGenerator.d.ts +3 -20
- package/dist/types/generators/configure.d.ts +2 -1
- package/dist/types/generators/types.d.ts +36 -0
- package/dist/types/helpers.d.ts +1 -1
- package/dist/types/initiate.d.ts +1 -15
- package/dist/types/repro-generators/configs.d.ts +1 -4
- package/dist/types/repro-generators/scripts.d.ts +1 -1
- package/package.json +9 -9
|
@@ -34,9 +34,15 @@ const automigrate = async ({
|
|
|
34
34
|
|
|
35
35
|
for (let i = 0; i < filtered.length; i += 1) {
|
|
36
36
|
const f = _fixes.fixes[i];
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
let result;
|
|
38
|
+
|
|
39
|
+
try {
|
|
40
|
+
result = await f.check({
|
|
41
|
+
packageManager
|
|
42
|
+
});
|
|
43
|
+
} catch (e) {
|
|
44
|
+
logger.info(`failed to check fix: ${f.id}`);
|
|
45
|
+
}
|
|
40
46
|
|
|
41
47
|
if (result) {
|
|
42
48
|
logger.info(`🔎 found a '${_chalk.default.cyan(f.id)}' migration:`);
|
package/dist/cjs/babel-config.js
CHANGED
|
@@ -11,8 +11,6 @@ var _fsExtra = require("fs-extra");
|
|
|
11
11
|
|
|
12
12
|
var _nodeLogger = require("@storybook/node-logger");
|
|
13
13
|
|
|
14
|
-
var _coreCommon = require("@storybook/core-common");
|
|
15
|
-
|
|
16
14
|
var _path = _interopRequireDefault(require("path"));
|
|
17
15
|
|
|
18
16
|
var _prompts = _interopRequireDefault(require("prompts"));
|
|
@@ -33,8 +31,11 @@ const generateStorybookBabelConfig = async ({
|
|
|
33
31
|
}) => {
|
|
34
32
|
_nodeLogger.logger.info(`Generating the storybook default babel config at ${target}`);
|
|
35
33
|
|
|
36
|
-
const
|
|
37
|
-
|
|
34
|
+
const contents = JSON.stringify({
|
|
35
|
+
sourceType: 'unambiguous',
|
|
36
|
+
presets: [],
|
|
37
|
+
plugins: []
|
|
38
|
+
}, null, 2);
|
|
38
39
|
const fileName = '.babelrc.json';
|
|
39
40
|
|
|
40
41
|
const location = _path.default.join(target, fileName);
|
|
@@ -13,9 +13,11 @@ export default {
|
|
|
13
13
|
} as Meta;
|
|
14
14
|
|
|
15
15
|
// More on component templates: https://storybook.js.org/docs/angular/writing-stories/introduction#using-args
|
|
16
|
-
const Template: Story<Button> = (args: Button) =>
|
|
17
|
-
|
|
18
|
-
}
|
|
16
|
+
const Template: Story<Button> = (args: Button) => {
|
|
17
|
+
return {
|
|
18
|
+
props: { backgroundColor: null, ...args },
|
|
19
|
+
};
|
|
20
|
+
};
|
|
19
21
|
|
|
20
22
|
export const Primary = Template.bind({});
|
|
21
23
|
// More on args: https://storybook.js.org/docs/angular/writing-stories/args
|
package/dist/cjs/generate.js
CHANGED
|
@@ -52,7 +52,7 @@ process.env.STORYBOOK_DISABLE_TELEMETRY && process.env.STORYBOOK_DISABLE_TELEMET
|
|
|
52
52
|
|
|
53
53
|
_commander.default.option('--enable-crash-reports', 'enable sending crash reports to telemetry data');
|
|
54
54
|
|
|
55
|
-
_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));
|
|
55
|
+
_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('--use-pnp', 'Enable pnp mode').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));
|
|
56
56
|
|
|
57
57
|
_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));
|
|
58
58
|
|
|
@@ -57,7 +57,30 @@ const generator = async (packageManager, npmOptions, options) => {
|
|
|
57
57
|
addScripts: false
|
|
58
58
|
});
|
|
59
59
|
(0, _helpers.copyTemplate)(__dirname);
|
|
60
|
-
editAngularAppTsConfig();
|
|
60
|
+
editAngularAppTsConfig(); // TODO: we need to add the following:
|
|
61
|
+
|
|
62
|
+
/*
|
|
63
|
+
"storybook": {
|
|
64
|
+
"builder": "@storybook/angular:start-storybook",
|
|
65
|
+
"options": {
|
|
66
|
+
"browserTarget": "angular-cli:build",
|
|
67
|
+
"port": 4400
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"build-storybook": {
|
|
71
|
+
"builder": "@storybook/angular:build-storybook",
|
|
72
|
+
"options": {
|
|
73
|
+
"browserTarget": "angular-cli:build"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
*/
|
|
77
|
+
// to the user's angular.json file. see: https://github.com/storybookjs/storybook/blob/next/examples/angular-cli/angular.json#L78
|
|
78
|
+
// then we want to add these scripts to package.json
|
|
79
|
+
// packageManager.addScripts({
|
|
80
|
+
// storybook: 'ng storybook',
|
|
81
|
+
// 'build-storybook': 'ng build-storybook',
|
|
82
|
+
// });
|
|
83
|
+
|
|
61
84
|
(0, _angularHelpers.editStorybookTsConfig)(_path.default.resolve('./.storybook/tsconfig.json')); // edit scripts to generate docs
|
|
62
85
|
|
|
63
86
|
const tsConfigFile = await (0, _angularHelpers.getBaseTsConfigName)();
|
|
@@ -54,33 +54,39 @@ const getBuilderDetails = builder => {
|
|
|
54
54
|
return builder;
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
-
const
|
|
57
|
+
const wrapForPnp = packageName => `%%path.dirname(require.resolve(path.join('${packageName}', 'package.json')))%%`;
|
|
58
|
+
|
|
59
|
+
const getFrameworkDetails = (renderer, builder, pnp) => {
|
|
58
60
|
const frameworkPackage = `@storybook/${renderer}-${builder}`;
|
|
61
|
+
const frameworkPackagePath = pnp ? wrapForPnp(frameworkPackage) : frameworkPackage;
|
|
59
62
|
const rendererPackage = `@storybook/${renderer}`;
|
|
63
|
+
const rendererPackagePath = pnp ? wrapForPnp(rendererPackage) : rendererPackage;
|
|
64
|
+
const builderPackage = getBuilderDetails(builder);
|
|
65
|
+
const builderPackagePath = pnp ? wrapForPnp(builderPackage) : builderPackage;
|
|
60
66
|
const isKnownFramework = !!_versions.default[frameworkPackage];
|
|
61
67
|
const isKnownRenderer = !!_versions.default[rendererPackage];
|
|
62
|
-
const builderPackage = getBuilderDetails(builder);
|
|
63
68
|
|
|
64
69
|
if (renderer === 'angular') {
|
|
65
70
|
return {
|
|
66
|
-
|
|
67
|
-
|
|
71
|
+
packages: [rendererPackage],
|
|
72
|
+
framework: rendererPackagePath,
|
|
68
73
|
type: 'framework'
|
|
69
74
|
};
|
|
70
75
|
}
|
|
71
76
|
|
|
72
77
|
if (isKnownFramework) {
|
|
73
78
|
return {
|
|
74
|
-
|
|
75
|
-
|
|
79
|
+
packages: [frameworkPackage],
|
|
80
|
+
framework: frameworkPackagePath,
|
|
76
81
|
type: 'framework'
|
|
77
82
|
};
|
|
78
83
|
}
|
|
79
84
|
|
|
80
85
|
if (isKnownRenderer) {
|
|
81
86
|
return {
|
|
82
|
-
|
|
83
|
-
builder:
|
|
87
|
+
packages: [rendererPackage, builderPackage],
|
|
88
|
+
builder: builderPackagePath,
|
|
89
|
+
renderer: rendererPackagePath,
|
|
84
90
|
type: 'renderer'
|
|
85
91
|
};
|
|
86
92
|
}
|
|
@@ -94,7 +100,8 @@ const hasInteractiveStories = framework => ['react', 'angular', 'preact', 'svelt
|
|
|
94
100
|
|
|
95
101
|
async function baseGenerator(packageManager, npmOptions, {
|
|
96
102
|
language,
|
|
97
|
-
builder = _project_types.CoreBuilder.Webpack5
|
|
103
|
+
builder = _project_types.CoreBuilder.Webpack5,
|
|
104
|
+
pnp
|
|
98
105
|
}, renderer, options = defaultOptions) {
|
|
99
106
|
const {
|
|
100
107
|
extraAddons: extraAddonPackages,
|
|
@@ -109,9 +116,9 @@ async function baseGenerator(packageManager, npmOptions, {
|
|
|
109
116
|
} = Object.assign({}, defaultOptions, options); // added to main.js
|
|
110
117
|
// make sure to update `canUsePrebuiltManager` in dev-server.js and build-manager-config/main.js when this list changes
|
|
111
118
|
|
|
112
|
-
const addons = ['@storybook/addon-links', '@storybook/addon-essentials']; // added to package.json
|
|
119
|
+
const addons = ['@storybook/addon-links', '@storybook/addon-essentials', ...stripVersions(extraAddonPackages)]; // added to package.json
|
|
113
120
|
|
|
114
|
-
const addonPackages = [
|
|
121
|
+
const addonPackages = ['@storybook/addon-links', '@storybook/addon-essentials', '@storybook/addon-actions', ...extraAddonPackages];
|
|
115
122
|
|
|
116
123
|
if (hasInteractiveStories(renderer)) {
|
|
117
124
|
addons.push('@storybook/addon-interactions');
|
|
@@ -123,20 +130,15 @@ async function baseGenerator(packageManager, npmOptions, {
|
|
|
123
130
|
const packageJson = packageManager.retrievePackageJson();
|
|
124
131
|
const installedDependencies = new Set(Object.keys(Object.assign({}, packageJson.dependencies, packageJson.devDependencies)));
|
|
125
132
|
const {
|
|
126
|
-
|
|
133
|
+
packages: frameworkPackages,
|
|
127
134
|
type,
|
|
128
|
-
|
|
129
|
-
|
|
135
|
+
// @ts-ignore
|
|
136
|
+
renderer: rendererInclude,
|
|
137
|
+
framework: frameworkInclude,
|
|
138
|
+
builder: builderInclude
|
|
139
|
+
} = getFrameworkDetails(renderer, builder, pnp); // TODO: We need to start supporting this at some point
|
|
130
140
|
|
|
131
141
|
if (type === 'renderer') {
|
|
132
|
-
console.log({
|
|
133
|
-
language,
|
|
134
|
-
builder,
|
|
135
|
-
renderer,
|
|
136
|
-
builderPackage,
|
|
137
|
-
frameworkPackage,
|
|
138
|
-
type
|
|
139
|
-
});
|
|
140
142
|
throw new Error((0, _tsDedent.default)`
|
|
141
143
|
Sorry, for now, you can not do this, please use a framework such as @storybook/react-webpack5
|
|
142
144
|
|
|
@@ -144,32 +146,30 @@ async function baseGenerator(packageManager, npmOptions, {
|
|
|
144
146
|
`);
|
|
145
147
|
}
|
|
146
148
|
|
|
147
|
-
const packages = ['sb',
|
|
149
|
+
const packages = ['sb', ...frameworkPackages, ...addonPackages, ...extraPackages, ...yarn2ExtraPackages].filter(Boolean).filter(packageToInstall => !installedDependencies.has((0, _jsPackageManager.getPackageDetails)(packageToInstall)[0]));
|
|
148
150
|
const versionedPackages = await packageManager.getVersionedPackages(packages);
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
});
|
|
152
|
-
const mainOptions = type !== 'framework' ? Object.assign({
|
|
153
|
-
core: {
|
|
154
|
-
builder: builderPackage
|
|
155
|
-
}
|
|
156
|
-
}, extraMain) : extraMain;
|
|
157
|
-
(0, _configure.configure)(renderer, Object.assign({
|
|
151
|
+
await _fsExtra.default.ensureDir('./.storybook');
|
|
152
|
+
await (0, _configure.configureMain)(Object.assign({
|
|
158
153
|
framework: {
|
|
159
|
-
name:
|
|
154
|
+
name: frameworkInclude,
|
|
160
155
|
options: {}
|
|
161
156
|
},
|
|
162
|
-
addons:
|
|
157
|
+
addons: pnp ? addons.map(wrapForPnp) : addons,
|
|
163
158
|
extensions,
|
|
164
159
|
commonJs: options.commonJs
|
|
165
|
-
},
|
|
160
|
+
}, extraMain, type !== 'framework' ? {
|
|
161
|
+
core: {
|
|
162
|
+
builder: builderInclude
|
|
163
|
+
}
|
|
164
|
+
} : {}));
|
|
165
|
+
await (0, _configure.configurePreview)(renderer, options.commonJs);
|
|
166
166
|
|
|
167
167
|
if (addComponents) {
|
|
168
168
|
(0, _helpers.copyComponents)(renderer, language);
|
|
169
169
|
} // FIXME: temporary workaround for https://github.com/storybookjs/storybook/issues/17516
|
|
170
170
|
|
|
171
171
|
|
|
172
|
-
if (
|
|
172
|
+
if (frameworkPackages.includes('@storybook/builder-vite')) {
|
|
173
173
|
const previewHead = (0, _tsDedent.default)`
|
|
174
174
|
<script>
|
|
175
175
|
window.global = window;
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.configureMain = configureMain;
|
|
7
|
+
exports.configurePreview = configurePreview;
|
|
8
|
+
|
|
9
|
+
require("core-js/modules/es.promise.js");
|
|
7
10
|
|
|
8
11
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
9
12
|
|
|
@@ -15,7 +18,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
15
18
|
|
|
16
19
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
17
20
|
|
|
18
|
-
function configureMain(_ref) {
|
|
21
|
+
async function configureMain(_ref) {
|
|
19
22
|
let {
|
|
20
23
|
addons,
|
|
21
24
|
extensions = ['js', 'jsx', 'ts', 'tsx'],
|
|
@@ -23,17 +26,20 @@ function configureMain(_ref) {
|
|
|
23
26
|
} = _ref,
|
|
24
27
|
custom = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
25
28
|
|
|
26
|
-
const prefix = _fsExtra.default.
|
|
29
|
+
const prefix = (await _fsExtra.default.pathExists('./src')) ? '../src' : '../stories';
|
|
27
30
|
const config = Object.assign({
|
|
28
31
|
stories: [`${prefix}/**/*.stories.mdx`, `${prefix}/**/*.stories.@(${extensions.join('|')})`],
|
|
29
32
|
addons
|
|
30
33
|
}, custom); // replace escaped values and delimiters
|
|
31
34
|
|
|
32
|
-
const stringified = `module.exports = ${JSON.stringify(config, null, 2).replace(/\\"/g, '"').replace(/['"]%%/g, '').replace(/%%['"]
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
const stringified = `module.exports = ${JSON.stringify(config, null, 2).replace(/\\"/g, '"').replace(/['"]%%/g, '').replace(/%%['"]/g, '').replace(/\\n/g, '\r\n')}`; // main.js isn't actually JSON, but we used JSON.stringify to convert the runtime-object into code.
|
|
36
|
+
// un-stringify the value for referencing packages by string
|
|
37
|
+
// .replaceAll(/"(path\.dirname\(require\.resolve\(path\.join\('.*\))"/g, (_, a) => a)}`;
|
|
35
38
|
|
|
36
|
-
_fsExtra.default.
|
|
39
|
+
await _fsExtra.default.writeFile(`./.storybook/main.${commonJs ? 'cjs' : 'js'}`, (0, _tsDedent.default)`
|
|
40
|
+
const path = require('path');
|
|
41
|
+
${stringified}
|
|
42
|
+
`, {
|
|
37
43
|
encoding: 'utf8'
|
|
38
44
|
});
|
|
39
45
|
}
|
|
@@ -50,14 +56,14 @@ const frameworkToPreviewParts = {
|
|
|
50
56
|
}
|
|
51
57
|
};
|
|
52
58
|
|
|
53
|
-
function configurePreview(framework, commonJs) {
|
|
59
|
+
async function configurePreview(framework, commonJs) {
|
|
54
60
|
const {
|
|
55
61
|
prefix = '',
|
|
56
62
|
extraParameters = ''
|
|
57
63
|
} = frameworkToPreviewParts[framework] || {};
|
|
58
64
|
const previewPath = `./.storybook/preview.${commonJs ? 'cjs' : 'js'}`; // If the framework template included a preview then we have nothing to do
|
|
59
65
|
|
|
60
|
-
if (_fsExtra.default.
|
|
66
|
+
if (await _fsExtra.default.pathExists(previewPath)) {
|
|
61
67
|
return;
|
|
62
68
|
}
|
|
63
69
|
|
|
@@ -73,15 +79,7 @@ function configurePreview(framework, commonJs) {
|
|
|
73
79
|
},
|
|
74
80
|
${extraParameters}
|
|
75
81
|
}`.replace(' \n', '').trim();
|
|
76
|
-
|
|
77
|
-
_fsExtra.default.writeFileSync(previewPath, preview, {
|
|
82
|
+
await _fsExtra.default.writeFile(previewPath, preview, {
|
|
78
83
|
encoding: 'utf8'
|
|
79
84
|
});
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
function configure(framework, mainOptions) {
|
|
83
|
-
_fsExtra.default.ensureDirSync('./.storybook');
|
|
84
|
-
|
|
85
|
-
configureMain(mainOptions);
|
|
86
|
-
configurePreview(framework, mainOptions.commonJs);
|
|
87
85
|
}
|
package/dist/cjs/helpers.js
CHANGED
|
@@ -189,51 +189,49 @@ function copyTemplate(templateRoot) {
|
|
|
189
189
|
});
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
function copyComponents(framework, language) {
|
|
192
|
+
async function copyComponents(framework, language) {
|
|
193
193
|
const languageFolderMapping = {
|
|
194
194
|
javascript: 'js',
|
|
195
195
|
typescript: 'ts'
|
|
196
196
|
};
|
|
197
197
|
|
|
198
|
-
const componentsPath = () => {
|
|
198
|
+
const componentsPath = async () => {
|
|
199
199
|
const frameworkPath = `frameworks/${framework}`;
|
|
200
200
|
|
|
201
201
|
const languageSpecific = _path.default.resolve(__dirname, `${frameworkPath}/${languageFolderMapping[language]}`);
|
|
202
202
|
|
|
203
|
-
if (_fsExtra.default.
|
|
203
|
+
if (await _fsExtra.default.pathExists(languageSpecific)) {
|
|
204
204
|
return languageSpecific;
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
const jsFallback = _path.default.resolve(__dirname, `${frameworkPath}/${languageFolderMapping.javascript}`);
|
|
208
208
|
|
|
209
|
-
if (_fsExtra.default.
|
|
209
|
+
if (await _fsExtra.default.pathExists(jsFallback)) {
|
|
210
210
|
return jsFallback;
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
const frameworkRootPath = _path.default.resolve(__dirname, frameworkPath);
|
|
214
214
|
|
|
215
|
-
if (_fsExtra.default.
|
|
215
|
+
if (await _fsExtra.default.pathExists(frameworkRootPath)) {
|
|
216
216
|
return frameworkRootPath;
|
|
217
217
|
}
|
|
218
218
|
|
|
219
219
|
throw new Error(`Unsupported framework: ${framework}`);
|
|
220
220
|
};
|
|
221
221
|
|
|
222
|
-
const targetPath = () => {
|
|
223
|
-
if (_fsExtra.default.
|
|
222
|
+
const targetPath = async () => {
|
|
223
|
+
if (await _fsExtra.default.pathExists('./src')) {
|
|
224
224
|
return './src/stories';
|
|
225
225
|
}
|
|
226
226
|
|
|
227
227
|
return './stories';
|
|
228
228
|
};
|
|
229
229
|
|
|
230
|
-
const destinationPath = targetPath();
|
|
231
|
-
|
|
232
|
-
_fsExtra.default.copySync(componentsPath(), destinationPath, {
|
|
230
|
+
const destinationPath = await targetPath();
|
|
231
|
+
await _fsExtra.default.copy(await componentsPath(), destinationPath, {
|
|
233
232
|
overwrite: true
|
|
234
233
|
});
|
|
235
|
-
|
|
236
|
-
_fsExtra.default.copySync(_path.default.resolve(__dirname, 'frameworks/common'), destinationPath, {
|
|
234
|
+
await _fsExtra.default.copy(_path.default.resolve(__dirname, 'frameworks/common'), destinationPath, {
|
|
237
235
|
overwrite: true
|
|
238
236
|
});
|
|
239
237
|
}
|
package/dist/cjs/initiate.js
CHANGED
|
@@ -81,7 +81,8 @@ const installStorybook = (projectType, packageManager, options) => {
|
|
|
81
81
|
language,
|
|
82
82
|
builder: options.builder || (0, _detect.detectBuilder)(packageManager),
|
|
83
83
|
linkable: !!options.linkable,
|
|
84
|
-
commonJs: options.commonJs
|
|
84
|
+
commonJs: options.commonJs,
|
|
85
|
+
pnp: options.usePnp
|
|
85
86
|
};
|
|
86
87
|
|
|
87
88
|
const runGenerator = async () => {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.web_components_typescript = exports.web_components_lit2 = exports.web_components = exports.vue3 = exports.vue = exports.
|
|
6
|
+
exports.web_components_typescript = exports.web_components_lit2 = exports.web_components = exports.vue3 = exports.vue = exports.svelte = exports.sfcVue = exports.react_typescript = exports.react_legacy_root_api = exports.react_in_yarn_workspace = exports.react = exports.preact = exports.html = exports.cra_typescript = exports.cra = exports.angular_modern_inline_rendering = exports.angular130 = exports.angular13 = exports.angular12 = exports.angular = void 0;
|
|
7
7
|
|
|
8
8
|
/* eslint-disable camelcase */
|
|
9
9
|
const fromDeps = (...args) => ['mkdir {{appName}}', 'cd {{appName}}', // Create `yarn.lock` to force Yarn to consider adding deps in this directory
|
|
@@ -67,15 +67,14 @@ const react_typescript = {
|
|
|
67
67
|
path: '.babelrc',
|
|
68
68
|
contents: '{ "presets": ["@babel/preset-react", "@babel/preset-typescript"] }'
|
|
69
69
|
}]
|
|
70
|
-
};
|
|
70
|
+
}; // export const vite_react: Parameters = {
|
|
71
|
+
// renderer: 'react',
|
|
72
|
+
// name: 'vite_react',
|
|
73
|
+
// version: 'latest',
|
|
74
|
+
// generator: 'npx -p create-vite@{{version}} create-vite {{appName}} --template react-ts',
|
|
75
|
+
// };
|
|
76
|
+
|
|
71
77
|
exports.react_typescript = react_typescript;
|
|
72
|
-
const vite_react = {
|
|
73
|
-
renderer: 'react',
|
|
74
|
-
name: 'vite_react',
|
|
75
|
-
version: 'latest',
|
|
76
|
-
generator: 'npx -p create-vite@{{version}} create-vite {{appName}} --template react-ts'
|
|
77
|
-
};
|
|
78
|
-
exports.vite_react = vite_react;
|
|
79
78
|
const react_in_yarn_workspace = {
|
|
80
79
|
renderer: 'react',
|
|
81
80
|
name: 'react_in_yarn_workspace',
|
|
@@ -89,18 +88,8 @@ const baseAngular = {
|
|
|
89
88
|
renderer: 'angular',
|
|
90
89
|
name: 'angular',
|
|
91
90
|
version: 'latest',
|
|
92
|
-
generator: `npx -p @angular/cli@{{version}} ng new {{appName}} --routing=true --minimal=true --style=scss --
|
|
91
|
+
generator: `npx -p @angular/cli@{{version}} ng new {{appName}} --routing=true --minimal=true --style=scss --skip-install=true --strict`
|
|
93
92
|
};
|
|
94
|
-
const angular10 = Object.assign({}, baseAngular, {
|
|
95
|
-
name: 'angular10',
|
|
96
|
-
version: 'v10-lts'
|
|
97
|
-
});
|
|
98
|
-
exports.angular10 = angular10;
|
|
99
|
-
const angular11 = Object.assign({}, baseAngular, {
|
|
100
|
-
name: 'angular11',
|
|
101
|
-
version: 'v11-lts'
|
|
102
|
-
});
|
|
103
|
-
exports.angular11 = angular11;
|
|
104
93
|
const angular12 = Object.assign({}, baseAngular, {
|
|
105
94
|
name: 'angular12',
|
|
106
95
|
version: 'v12-lts'
|
|
@@ -121,8 +110,7 @@ const angular_modern_inline_rendering = Object.assign({}, baseAngular, {
|
|
|
121
110
|
additionalDeps: ['jest@27', '@storybook/test-runner'],
|
|
122
111
|
mainOverrides: {
|
|
123
112
|
features: {
|
|
124
|
-
storyStoreV7: true
|
|
125
|
-
modernInlineRender: true
|
|
113
|
+
storyStoreV7: true
|
|
126
114
|
}
|
|
127
115
|
}
|
|
128
116
|
});
|
|
@@ -140,14 +128,24 @@ const web_components = {
|
|
|
140
128
|
exports.web_components = web_components;
|
|
141
129
|
const web_components_typescript = Object.assign({}, web_components, {
|
|
142
130
|
name: 'web_components_typescript',
|
|
143
|
-
typescript: true
|
|
131
|
+
typescript: true,
|
|
132
|
+
additionalDeps: ['@babel/preset-typescript'],
|
|
133
|
+
additionalFiles: [{
|
|
134
|
+
path: '.babelrc',
|
|
135
|
+
contents: '{ "presets": ["@babel/preset-typescript"] }'
|
|
136
|
+
}]
|
|
144
137
|
});
|
|
145
138
|
exports.web_components_typescript = web_components_typescript;
|
|
146
139
|
const web_components_lit2 = Object.assign({}, web_components, {
|
|
147
140
|
version: 'next',
|
|
148
141
|
name: 'web_components_lit2',
|
|
149
142
|
generator: fromDeps('lit'),
|
|
150
|
-
typescript: true
|
|
143
|
+
typescript: true,
|
|
144
|
+
additionalDeps: ['@babel/preset-typescript'],
|
|
145
|
+
additionalFiles: [{
|
|
146
|
+
path: '.babelrc',
|
|
147
|
+
contents: '{ "presets": ["@babel/preset-typescript"] }'
|
|
148
|
+
}]
|
|
151
149
|
}); // #endregion
|
|
152
150
|
// #region vue
|
|
153
151
|
|
|
@@ -41,11 +41,12 @@ const exec = async (command, options = {}, {
|
|
|
41
41
|
logger.debug(command);
|
|
42
42
|
return new Promise((resolve, reject) => {
|
|
43
43
|
const defaultOptions = {
|
|
44
|
-
silent:
|
|
44
|
+
silent: false
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
const child = _shelljs.default.exec(command, Object.assign({}, defaultOptions, options, {
|
|
48
|
-
async: true
|
|
48
|
+
async: true,
|
|
49
|
+
silent: false
|
|
49
50
|
}));
|
|
50
51
|
|
|
51
52
|
child.stderr.pipe(process.stderr);
|
|
@@ -170,28 +171,37 @@ const addAdditionalFiles = async ({
|
|
|
170
171
|
additionalFiles,
|
|
171
172
|
cwd
|
|
172
173
|
}) => {
|
|
173
|
-
if (!additionalFiles || additionalFiles.length === 0) {
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
174
|
logger.info(`⤵️ Adding required files`);
|
|
178
|
-
additionalFiles.
|
|
175
|
+
await Promise.all(additionalFiles.map(async file => {
|
|
179
176
|
await (0, _fsExtra.outputFile)(_path.default.resolve(cwd, file.path), file.contents, {
|
|
180
177
|
encoding: 'UTF-8'
|
|
181
178
|
});
|
|
182
|
-
});
|
|
179
|
+
}));
|
|
183
180
|
};
|
|
184
181
|
|
|
185
182
|
const initStorybook = async ({
|
|
186
183
|
cwd,
|
|
187
184
|
autoDetect = true,
|
|
188
185
|
name,
|
|
189
|
-
e2e
|
|
186
|
+
e2e,
|
|
187
|
+
pnp
|
|
190
188
|
}) => {
|
|
191
|
-
const
|
|
192
|
-
|
|
189
|
+
const flags = ['--yes'];
|
|
190
|
+
|
|
191
|
+
if (!autoDetect) {
|
|
192
|
+
flags.push(`--type ${name}`);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (e2e) {
|
|
196
|
+
flags.push('--linkable');
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if (pnp) {
|
|
200
|
+
flags.push('--use-pnp');
|
|
201
|
+
}
|
|
202
|
+
|
|
193
203
|
const sbCLICommand = useLocalSbCli ? `node ${_path.default.join(__dirname, '../../esm/generate')}` : `yarn dlx -p @storybook/cli sb`;
|
|
194
|
-
const command = `${sbCLICommand} init
|
|
204
|
+
const command = `${sbCLICommand} init ${flags.join(' ')}`;
|
|
195
205
|
await exec(command, {
|
|
196
206
|
cwd
|
|
197
207
|
}, {
|
|
@@ -283,7 +293,7 @@ const createAndInit = async (cwd, _ref, {
|
|
|
283
293
|
}));
|
|
284
294
|
await doTask(addAdditionalFiles, Object.assign({}, options, {
|
|
285
295
|
cwd
|
|
286
|
-
}));
|
|
296
|
+
}), !!options.additionalFiles);
|
|
287
297
|
|
|
288
298
|
if (e2e) {
|
|
289
299
|
await doTask(addPackageResolutions, options);
|