@nx/storybook 21.2.0-beta.2 → 21.2.0-beta.4
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/generators.json +6 -13
- package/index.d.ts +0 -2
- package/index.js +1 -6
- package/migrations.json +109 -0
- package/package.json +8 -5
- package/src/executors/build-storybook/build-storybook.impl.d.ts +1 -1
- package/src/executors/build-storybook/build-storybook.impl.js +6 -1
- package/src/executors/storybook/storybook.impl.d.ts +1 -1
- package/src/executors/storybook/storybook.impl.js +6 -1
- package/src/generators/configuration/configuration.js +3 -10
- package/src/generators/configuration/lib/ensure-dependencies.js +15 -13
- package/src/generators/configuration/lib/interaction-testing.utils.d.ts +1 -5
- package/src/generators/configuration/lib/interaction-testing.utils.js +0 -43
- package/src/generators/configuration/project-files/.storybook/main.js__tmpl__ +1 -1
- package/src/generators/configuration/project-files-ts/.storybook/main.ts__tmpl__ +1 -1
- package/src/generators/configuration/schema.json +1 -8
- package/src/generators/{migrate-7 → migrate-9}/calling-storybook-cli.d.ts +0 -2
- package/src/generators/{migrate-7 → migrate-9}/calling-storybook-cli.js +11 -5
- package/src/generators/migrate-9/files/storybook-migration-summary.md__tmpl__ +55 -0
- package/src/generators/migrate-9/helper-functions.d.ts +31 -0
- package/src/generators/migrate-9/helper-functions.js +142 -0
- package/src/generators/migrate-9/migrate-9.d.ts +4 -0
- package/src/generators/migrate-9/migrate-9.js +37 -0
- package/src/generators/{migrate-7 → migrate-9}/schema.d.ts +1 -2
- package/src/generators/migrate-9/schema.json +31 -0
- package/src/migrations/update-21-1-0/update-sb-9.d.ts +2 -0
- package/src/migrations/update-21-1-0/update-sb-9.js +34 -0
- package/src/migrations/update-21-2-0/remove-addon-dependencies.d.ts +2 -0
- package/src/migrations/update-21-2-0/remove-addon-dependencies.js +13 -0
- package/src/utils/utilities.js +5 -5
- package/src/utils/versions.d.ts +1 -1
- package/src/utils/versions.js +1 -1
- package/src/generators/cypress-project/cypress-project.d.ts +0 -13
- package/src/generators/cypress-project/cypress-project.js +0 -130
- package/src/generators/cypress-project/files/explicit-target/cypress.config.ts__tpl__ +0 -6
- package/src/generators/cypress-project/files/inferred-target/cypress.config.ts__tpl__ +0 -13
- package/src/generators/cypress-project/schema.json +0 -50
- package/src/generators/migrate-7/files/storybook-migration-summary.md__tmpl__ +0 -80
- package/src/generators/migrate-7/helper-functions.d.ts +0 -69
- package/src/generators/migrate-7/helper-functions.js +0 -445
- package/src/generators/migrate-7/migrate-7.d.ts +0 -4
- package/src/generators/migrate-7/migrate-7.js +0 -67
- package/src/generators/migrate-7/schema.json +0 -35
package/generators.json
CHANGED
|
@@ -15,29 +15,22 @@
|
|
|
15
15
|
"description": "Add Storybook configuration to a UI library or an application.",
|
|
16
16
|
"hidden": false
|
|
17
17
|
},
|
|
18
|
-
"cypress-project": {
|
|
19
|
-
"factory": "./src/generators/cypress-project/cypress-project",
|
|
20
|
-
"schema": "./src/generators/cypress-project/schema.json",
|
|
21
|
-
"description": "Add cypress E2E app to test a ui library that is set up for Storybook.",
|
|
22
|
-
"x-deprecated": "Deprecated: Use 'interactionTests' instead when running '@nx/storybook:configuration'. This generator will be removed in v21.",
|
|
23
|
-
"hidden": false
|
|
24
|
-
},
|
|
25
18
|
"convert-to-inferred": {
|
|
26
19
|
"factory": "./src/generators/convert-to-inferred/convert-to-inferred",
|
|
27
20
|
"schema": "./src/generators/convert-to-inferred/schema.json",
|
|
28
21
|
"description": "Convert existing Storybook project(s) using `@nx/storybook:*` executors to use `@nx/storybook/plugin`. Defaults to migrating all projects. Pass '--project' to migrate only one target."
|
|
29
22
|
},
|
|
30
|
-
"migrate-7": {
|
|
31
|
-
"factory": "./src/generators/migrate-7/migrate-7",
|
|
32
|
-
"schema": "./src/generators/migrate-7/schema.json",
|
|
33
|
-
"description": "Migrate to Storybook version 7.",
|
|
34
|
-
"hidden": false
|
|
35
|
-
},
|
|
36
23
|
"migrate-8": {
|
|
37
24
|
"factory": "./src/generators/migrate-8/migrate-8",
|
|
38
25
|
"schema": "./src/generators/migrate-8/schema.json",
|
|
39
26
|
"description": "Migrate to Storybook version 8.",
|
|
40
27
|
"hidden": false
|
|
28
|
+
},
|
|
29
|
+
"migrate-9": {
|
|
30
|
+
"factory": "./src/generators/migrate-9/migrate-9",
|
|
31
|
+
"schema": "./src/generators/migrate-9/schema.json",
|
|
32
|
+
"description": "Migrate to Storybook version 9.",
|
|
33
|
+
"hidden": false
|
|
41
34
|
}
|
|
42
35
|
}
|
|
43
36
|
}
|
package/index.d.ts
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
1
|
export { configurationGenerator } from './src/generators/configuration/configuration';
|
|
2
|
-
export { cypressProjectGenerator } from './src/generators/cypress-project/cypress-project';
|
|
3
2
|
export { storybookVersion } from './src/utils/versions';
|
|
4
|
-
export { interactionTestsDependencies, addInteractionsInAddons, } from './src/generators/configuration/lib/interaction-testing.utils';
|
package/index.js
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.storybookVersion = exports.configurationGenerator = void 0;
|
|
4
4
|
var configuration_1 = require("./src/generators/configuration/configuration");
|
|
5
5
|
Object.defineProperty(exports, "configurationGenerator", { enumerable: true, get: function () { return configuration_1.configurationGenerator; } });
|
|
6
|
-
var cypress_project_1 = require("./src/generators/cypress-project/cypress-project");
|
|
7
|
-
Object.defineProperty(exports, "cypressProjectGenerator", { enumerable: true, get: function () { return cypress_project_1.cypressProjectGenerator; } });
|
|
8
6
|
var versions_1 = require("./src/utils/versions");
|
|
9
7
|
Object.defineProperty(exports, "storybookVersion", { enumerable: true, get: function () { return versions_1.storybookVersion; } });
|
|
10
|
-
var interaction_testing_utils_1 = require("./src/generators/configuration/lib/interaction-testing.utils");
|
|
11
|
-
Object.defineProperty(exports, "interactionTestsDependencies", { enumerable: true, get: function () { return interaction_testing_utils_1.interactionTestsDependencies; } });
|
|
12
|
-
Object.defineProperty(exports, "addInteractionsInAddons", { enumerable: true, get: function () { return interaction_testing_utils_1.addInteractionsInAddons; } });
|
package/migrations.json
CHANGED
|
@@ -5,6 +5,18 @@
|
|
|
5
5
|
"version": "19.6.0-beta.0",
|
|
6
6
|
"description": "Update workspace to use Storybook v8",
|
|
7
7
|
"implementation": "./src/migrations/update-19-6-0/update-sb-8"
|
|
8
|
+
},
|
|
9
|
+
"update-21-2-0-migrate-storybook-v9": {
|
|
10
|
+
"cli": "nx",
|
|
11
|
+
"version": "21.2.0-beta.3",
|
|
12
|
+
"description": "Update workspace to use Storybook v9",
|
|
13
|
+
"implementation": "./src/migrations/update-21-1-0/update-sb-9"
|
|
14
|
+
},
|
|
15
|
+
"update-21-2-0-remove-addon-dependencies": {
|
|
16
|
+
"cli": "nx",
|
|
17
|
+
"version": "21.2.0-beta.3",
|
|
18
|
+
"description": "Remove deprecated Storybook addon dependencies",
|
|
19
|
+
"implementation": "./src/migrations/update-21-2-0/remove-addon-dependencies"
|
|
8
20
|
}
|
|
9
21
|
},
|
|
10
22
|
"packageJsonUpdates": {
|
|
@@ -738,6 +750,103 @@
|
|
|
738
750
|
"alwaysAddToPackageJson": false
|
|
739
751
|
}
|
|
740
752
|
}
|
|
753
|
+
},
|
|
754
|
+
"21.1.0": {
|
|
755
|
+
"version": "21.2.0-beta.3",
|
|
756
|
+
"packages": {
|
|
757
|
+
"@storybook/angular": {
|
|
758
|
+
"version": "^9.0.5",
|
|
759
|
+
"alwaysAddToPackageJson": false
|
|
760
|
+
},
|
|
761
|
+
"@storybook/react": {
|
|
762
|
+
"version": "^9.0.5",
|
|
763
|
+
"alwaysAddToPackageJson": false
|
|
764
|
+
},
|
|
765
|
+
"storybook": {
|
|
766
|
+
"version": "^9.0.5",
|
|
767
|
+
"alwaysAddToPackageJson": true
|
|
768
|
+
},
|
|
769
|
+
"@storybook/addon-onboarding": {
|
|
770
|
+
"version": "^9.0.5",
|
|
771
|
+
"alwaysAddToPackageJson": false
|
|
772
|
+
},
|
|
773
|
+
"@storybook/addon-themes": {
|
|
774
|
+
"version": "^9.0.5",
|
|
775
|
+
"alwaysAddToPackageJson": false
|
|
776
|
+
},
|
|
777
|
+
"@storybook/builder-webpack5": {
|
|
778
|
+
"version": "^9.0.5",
|
|
779
|
+
"alwaysAddToPackageJson": false
|
|
780
|
+
},
|
|
781
|
+
"@storybook/core-webpack": {
|
|
782
|
+
"version": "^9.0.5",
|
|
783
|
+
"alwaysAddToPackageJson": false
|
|
784
|
+
},
|
|
785
|
+
"@storybook/html": {
|
|
786
|
+
"version": "^9.0.5",
|
|
787
|
+
"alwaysAddToPackageJson": false
|
|
788
|
+
},
|
|
789
|
+
"@storybook/html-vite": {
|
|
790
|
+
"version": "^9.0.5",
|
|
791
|
+
"alwaysAddToPackageJson": false
|
|
792
|
+
},
|
|
793
|
+
"@storybook/nextjs": {
|
|
794
|
+
"version": "^9.0.5",
|
|
795
|
+
"alwaysAddToPackageJson": false
|
|
796
|
+
},
|
|
797
|
+
"@storybook/preact": {
|
|
798
|
+
"version": "^9.0.5",
|
|
799
|
+
"alwaysAddToPackageJson": false
|
|
800
|
+
},
|
|
801
|
+
"@storybook/preact-vite": {
|
|
802
|
+
"version": "^9.0.5",
|
|
803
|
+
"alwaysAddToPackageJson": false
|
|
804
|
+
},
|
|
805
|
+
"@storybook/react-vite": {
|
|
806
|
+
"version": "^9.0.5",
|
|
807
|
+
"alwaysAddToPackageJson": false
|
|
808
|
+
},
|
|
809
|
+
"@storybook/react-webpack5": {
|
|
810
|
+
"version": "^9.0.5",
|
|
811
|
+
"alwaysAddToPackageJson": false
|
|
812
|
+
},
|
|
813
|
+
"@storybook/server": {
|
|
814
|
+
"version": "^9.0.5",
|
|
815
|
+
"alwaysAddToPackageJson": false
|
|
816
|
+
},
|
|
817
|
+
"@storybook/server-webpack5": {
|
|
818
|
+
"version": "^9.0.5",
|
|
819
|
+
"alwaysAddToPackageJson": false
|
|
820
|
+
},
|
|
821
|
+
"@storybook/svelte": {
|
|
822
|
+
"version": "^9.0.5",
|
|
823
|
+
"alwaysAddToPackageJson": false
|
|
824
|
+
},
|
|
825
|
+
"@storybook/svelte-vite": {
|
|
826
|
+
"version": "^9.0.5",
|
|
827
|
+
"alwaysAddToPackageJson": false
|
|
828
|
+
},
|
|
829
|
+
"@storybook/sveltekit": {
|
|
830
|
+
"version": "^9.0.5",
|
|
831
|
+
"alwaysAddToPackageJson": false
|
|
832
|
+
},
|
|
833
|
+
"@storybook/vue3": {
|
|
834
|
+
"version": "^9.0.5",
|
|
835
|
+
"alwaysAddToPackageJson": false
|
|
836
|
+
},
|
|
837
|
+
"@storybook/vue3-vite": {
|
|
838
|
+
"version": "^9.0.5",
|
|
839
|
+
"alwaysAddToPackageJson": false
|
|
840
|
+
},
|
|
841
|
+
"@storybook/web-components": {
|
|
842
|
+
"version": "^9.0.5",
|
|
843
|
+
"alwaysAddToPackageJson": false
|
|
844
|
+
},
|
|
845
|
+
"@storybook/web-components-vite": {
|
|
846
|
+
"version": "^9.0.5",
|
|
847
|
+
"alwaysAddToPackageJson": false
|
|
848
|
+
}
|
|
849
|
+
}
|
|
741
850
|
}
|
|
742
851
|
}
|
|
743
852
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx/storybook",
|
|
3
|
-
"version": "21.2.0-beta.
|
|
3
|
+
"version": "21.2.0-beta.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The Nx Plugin for Storybook contains executors and generators for allowing your workspace to use the powerful Storybook integration testing & documenting capabilities.",
|
|
6
6
|
"repository": {
|
|
@@ -33,13 +33,16 @@
|
|
|
33
33
|
"migrations": "./migrations.json"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@nx/devkit": "21.2.0-beta.
|
|
36
|
+
"@nx/devkit": "21.2.0-beta.4",
|
|
37
37
|
"@phenomnomnominal/tsquery": "~5.0.1",
|
|
38
38
|
"semver": "^7.5.3",
|
|
39
39
|
"tslib": "^2.3.0",
|
|
40
|
-
"@nx/cypress": "21.2.0-beta.
|
|
41
|
-
"@nx/js": "21.2.0-beta.
|
|
42
|
-
"@nx/eslint": "21.2.0-beta.
|
|
40
|
+
"@nx/cypress": "21.2.0-beta.4",
|
|
41
|
+
"@nx/js": "21.2.0-beta.4",
|
|
42
|
+
"@nx/eslint": "21.2.0-beta.4"
|
|
43
|
+
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"storybook": ">=7.0.0 <10.0.0"
|
|
43
46
|
},
|
|
44
47
|
"publishConfig": {
|
|
45
48
|
"access": "public"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ExecutorContext } from '@nx/devkit';
|
|
2
|
-
import { CLIOptions } from '
|
|
2
|
+
import type { CLIOptions } from 'storybook/internal/types';
|
|
3
3
|
export default function buildStorybookExecutor(options: CLIOptions, context: ExecutorContext): Promise<{
|
|
4
4
|
success: boolean;
|
|
5
5
|
}>;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.default = buildStorybookExecutor;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
5
|
const utilities_1 = require("../../utils/utilities");
|
|
6
|
+
const semver_1 = require("semver");
|
|
6
7
|
async function buildStorybookExecutor(options, context) {
|
|
7
8
|
(0, utilities_1.storybookConfigExistsCheck)(options.configDir, context.projectName);
|
|
8
9
|
const storybookMajor = (0, utilities_1.storybookMajorVersion)();
|
|
@@ -20,7 +21,11 @@ async function buildStorybookExecutor(options, context) {
|
|
|
20
21
|
return { success: true };
|
|
21
22
|
}
|
|
22
23
|
async function runInstance(options) {
|
|
23
|
-
const
|
|
24
|
+
const installedStorybookVersion = (0, utilities_1.getInstalledStorybookVersion)();
|
|
25
|
+
const hasCoreServerInStorybookPackage = (0, semver_1.gte)(installedStorybookVersion, '8.2.0');
|
|
26
|
+
const storybookCore = await (hasCoreServerInStorybookPackage
|
|
27
|
+
? Promise.resolve().then(() => require('storybook/internal/core-server')) : // This is needed for backwards compatibility - but we do not have the package installed in the nx repo
|
|
28
|
+
Promise.resolve().then(() => require('@storybook/core-server')));
|
|
24
29
|
const env = process.env.NODE_ENV ?? 'production';
|
|
25
30
|
process.env.NODE_ENV = env;
|
|
26
31
|
return storybookCore.build({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ExecutorContext } from '@nx/devkit';
|
|
2
|
-
import { CLIOptions } from '
|
|
2
|
+
import type { CLIOptions } from 'storybook/internal/types';
|
|
3
3
|
export default function storybookExecutor(options: CLIOptions, context: ExecutorContext): AsyncGenerator<{
|
|
4
4
|
success: boolean;
|
|
5
5
|
info?: {
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.default = storybookExecutor;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
5
|
const utilities_1 = require("../../utils/utilities");
|
|
6
|
+
const semver_1 = require("semver");
|
|
6
7
|
async function* storybookExecutor(options, context) {
|
|
7
8
|
const storybookMajor = (0, utilities_1.storybookMajorVersion)();
|
|
8
9
|
if (storybookMajor > 0 && storybookMajor <= 6) {
|
|
@@ -24,7 +25,11 @@ async function* storybookExecutor(options, context) {
|
|
|
24
25
|
await new Promise(() => { });
|
|
25
26
|
}
|
|
26
27
|
async function runInstance(options) {
|
|
27
|
-
const
|
|
28
|
+
const installedStorybookVersion = (0, utilities_1.getInstalledStorybookVersion)();
|
|
29
|
+
const hasCoreServerInStorybookPackage = (0, semver_1.gte)(installedStorybookVersion, '8.2.0');
|
|
30
|
+
const storybookCore = await (hasCoreServerInStorybookPackage
|
|
31
|
+
? Promise.resolve().then(() => require('storybook/internal/core-server')) : // This is needed for backwards compatibility - but we do not have the package installed in the nx repo
|
|
32
|
+
Promise.resolve().then(() => require('@storybook/core-server')));
|
|
28
33
|
const env = process.env.NODE_ENV ?? 'development';
|
|
29
34
|
process.env.NODE_ENV = env;
|
|
30
35
|
return storybookCore.build({
|
|
@@ -8,7 +8,6 @@ const init_1 = require("../init/init");
|
|
|
8
8
|
const util_functions_1 = require("./lib/util-functions");
|
|
9
9
|
const utilities_1 = require("../../utils/utilities");
|
|
10
10
|
const versions_1 = require("../../utils/versions");
|
|
11
|
-
const interaction_testing_utils_1 = require("./lib/interaction-testing.utils");
|
|
12
11
|
const ensure_dependencies_1 = require("./lib/ensure-dependencies");
|
|
13
12
|
const edit_root_tsconfig_1 = require("./lib/edit-root-tsconfig");
|
|
14
13
|
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
|
@@ -17,11 +16,11 @@ function configurationGenerator(tree, schema) {
|
|
|
17
16
|
}
|
|
18
17
|
async function configurationGeneratorInternal(tree, rawSchema) {
|
|
19
18
|
const storybookMajor = (0, utilities_1.storybookMajorVersion)();
|
|
20
|
-
if (storybookMajor > 0 && storybookMajor ===
|
|
19
|
+
if (storybookMajor > 0 && storybookMajor === 7) {
|
|
21
20
|
throw new Error((0, utilities_1.pleaseUpgrade)());
|
|
22
21
|
}
|
|
23
|
-
else if (storybookMajor ===
|
|
24
|
-
devkit_1.logger.warn(`Support for Storybook
|
|
22
|
+
else if (storybookMajor === 8) {
|
|
23
|
+
devkit_1.logger.warn(`Support for Storybook 8 is deprecated. Please upgrade to Storybook 9. See https://nx.dev/nx-api/storybook/generators/migrate-9 for more details.`);
|
|
25
24
|
}
|
|
26
25
|
const schema = normalizeSchema(tree, rawSchema);
|
|
27
26
|
const tasks = [];
|
|
@@ -102,12 +101,6 @@ async function configurationGeneratorInternal(tree, rawSchema) {
|
|
|
102
101
|
if (usesVite && !viteConfigFilePath) {
|
|
103
102
|
devDeps['tslib'] = versions_1.tsLibVersion;
|
|
104
103
|
}
|
|
105
|
-
if (schema.interactionTests) {
|
|
106
|
-
devDeps = {
|
|
107
|
-
...devDeps,
|
|
108
|
-
...(0, interaction_testing_utils_1.interactionTestsDependencies)(),
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
104
|
if (schema.configureStaticServe) {
|
|
112
105
|
devDeps['@nx/web'] = versions_1.nxVersion;
|
|
113
106
|
}
|
|
@@ -6,21 +6,24 @@ const semver_1 = require("semver");
|
|
|
6
6
|
const utilities_1 = require("../../../utils/utilities");
|
|
7
7
|
const versions_1 = require("../../../utils/versions");
|
|
8
8
|
function ensureDependencies(tree, options) {
|
|
9
|
-
let
|
|
10
|
-
|
|
9
|
+
let storybookVersionToInstall = versions_1.storybookVersion;
|
|
10
|
+
const installedStorybookMajorVersion = (0, utilities_1.storybookMajorVersion)();
|
|
11
|
+
if (installedStorybookMajorVersion >= 7 &&
|
|
11
12
|
(0, utilities_1.getInstalledStorybookVersion)() &&
|
|
12
13
|
(0, semver_1.gte)((0, utilities_1.getInstalledStorybookVersion)(), '7.0.0')) {
|
|
13
|
-
|
|
14
|
+
storybookVersionToInstall = (0, utilities_1.getInstalledStorybookVersion)();
|
|
14
15
|
}
|
|
15
16
|
const dependencies = {};
|
|
16
|
-
const devDependencies =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
const devDependencies = installedStorybookMajorVersion < 9
|
|
18
|
+
? {
|
|
19
|
+
'@storybook/core-server': storybookVersionToInstall,
|
|
20
|
+
'@storybook/addon-essentials': storybookVersionToInstall,
|
|
21
|
+
}
|
|
22
|
+
: {};
|
|
20
23
|
const packageJson = (0, devkit_1.readJson)(tree, 'package.json');
|
|
21
24
|
packageJson.dependencies ??= {};
|
|
22
25
|
packageJson.devDependencies ??= {};
|
|
23
|
-
if (!(0, semver_1.gte)((0, semver_1.coerce)(
|
|
26
|
+
if (!(0, semver_1.gte)((0, semver_1.coerce)(storybookVersionToInstall), '8.0.0')) {
|
|
24
27
|
// Needed for Storybook 7
|
|
25
28
|
// https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-peer-dependencies-required
|
|
26
29
|
if (!packageJson.dependencies['react'] &&
|
|
@@ -33,7 +36,7 @@ function ensureDependencies(tree, options) {
|
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
if (options.uiFramework) {
|
|
36
|
-
devDependencies[options.uiFramework] =
|
|
39
|
+
devDependencies[options.uiFramework] = storybookVersionToInstall;
|
|
37
40
|
const isPnpm = (0, devkit_1.detectPackageManager)(tree.root) === 'pnpm';
|
|
38
41
|
if (isPnpm) {
|
|
39
42
|
// If it's pnpm, it needs the framework without the builder
|
|
@@ -41,13 +44,13 @@ function ensureDependencies(tree, options) {
|
|
|
41
44
|
const matchResult = options.uiFramework?.match(/^@storybook\/(\w+)/);
|
|
42
45
|
const uiFrameworkWithoutBuilder = matchResult ? matchResult[0] : null;
|
|
43
46
|
if (uiFrameworkWithoutBuilder) {
|
|
44
|
-
devDependencies[uiFrameworkWithoutBuilder] =
|
|
47
|
+
devDependencies[uiFrameworkWithoutBuilder] = storybookVersionToInstall;
|
|
45
48
|
}
|
|
46
49
|
}
|
|
47
50
|
if (options.uiFramework === '@storybook/vue3-vite') {
|
|
48
51
|
if (!packageJson.dependencies['@storybook/vue3'] &&
|
|
49
52
|
!packageJson.devDependencies['@storybook/vue3']) {
|
|
50
|
-
devDependencies['@storybook/vue3'] =
|
|
53
|
+
devDependencies['@storybook/vue3'] = storybookVersionToInstall;
|
|
51
54
|
}
|
|
52
55
|
}
|
|
53
56
|
if (options.uiFramework === '@storybook/angular') {
|
|
@@ -56,8 +59,7 @@ function ensureDependencies(tree, options) {
|
|
|
56
59
|
devDependencies['@angular/forms'] = '*';
|
|
57
60
|
}
|
|
58
61
|
}
|
|
59
|
-
if (options.uiFramework === '@storybook/web-components-vite'
|
|
60
|
-
options.uiFramework === '@storybook/web-components-webpack5') {
|
|
62
|
+
if (options.uiFramework === '@storybook/web-components-vite') {
|
|
61
63
|
devDependencies['lit'] = versions_1.litVersion;
|
|
62
64
|
}
|
|
63
65
|
if (options.uiFramework.endsWith('-vite')) {
|
|
@@ -1,48 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.interactionTestsDependencies = interactionTestsDependencies;
|
|
4
|
-
exports.addInteractionsInAddons = addInteractionsInAddons;
|
|
5
|
-
const devkit_1 = require("@nx/devkit");
|
|
6
|
-
const tsquery_1 = require("@phenomnomnominal/tsquery");
|
|
7
|
-
const versions_1 = require("../../../utils/versions");
|
|
8
|
-
function interactionTestsDependencies() {
|
|
9
|
-
return {
|
|
10
|
-
'@storybook/test-runner': versions_1.storybookTestRunnerVersion,
|
|
11
|
-
'@storybook/addon-interactions': versions_1.storybookVersion,
|
|
12
|
-
'@storybook/testing-library': versions_1.storybookTestingLibraryVersion,
|
|
13
|
-
'@storybook/jest': versions_1.storybookJestVersion,
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
function addInteractionsInAddons(tree, projectConfig) {
|
|
17
|
-
const mainJsTsPath = getMainTsJsPath(tree, projectConfig);
|
|
18
|
-
if (!mainJsTsPath)
|
|
19
|
-
return;
|
|
20
|
-
let mainJsTs = tree.read(mainJsTsPath, 'utf-8');
|
|
21
|
-
if (!mainJsTs)
|
|
22
|
-
return;
|
|
23
|
-
// Find addons array
|
|
24
|
-
const addonsArray = tsquery_1.tsquery.query(mainJsTs, `PropertyAssignment:has(Identifier:has([name="addons"]))`)?.[0];
|
|
25
|
-
// if there's no addons array don't do anything
|
|
26
|
-
// they may be setting up storybook in another project
|
|
27
|
-
if (!addonsArray)
|
|
28
|
-
return;
|
|
29
|
-
// Check if addons array already has addon-interactions
|
|
30
|
-
const addonsArrayHasAddonInteractions = tsquery_1.tsquery.query(addonsArray, `StringLiteral:has([text="@storybook/addon-interactions"])`)?.[0];
|
|
31
|
-
if (addonsArrayHasAddonInteractions)
|
|
32
|
-
return;
|
|
33
|
-
// get the array of the addons
|
|
34
|
-
const arrayLiteralExpression = tsquery_1.tsquery.query(addonsArray, `ArrayLiteralExpression`)?.[0];
|
|
35
|
-
if (!arrayLiteralExpression)
|
|
36
|
-
return;
|
|
37
|
-
mainJsTs = (0, devkit_1.applyChangesToString)(mainJsTs, [
|
|
38
|
-
{
|
|
39
|
-
type: devkit_1.ChangeType.Insert,
|
|
40
|
-
index: arrayLiteralExpression.getStart() + 1,
|
|
41
|
-
text: `'@storybook/addon-interactions', `,
|
|
42
|
-
},
|
|
43
|
-
]);
|
|
44
|
-
tree.write(mainJsTsPath, mainJsTs);
|
|
45
|
-
}
|
|
46
3
|
function getMainTsJsPath(host, projectConfig) {
|
|
47
4
|
// Inferred targets from `@nx/storybook/plugin` are inferred from `.storybook/main.{js,ts,mjs,mts,cjs,cts}` so we can assume the directory.
|
|
48
5
|
if (!projectConfig.targets) {
|
|
@@ -9,7 +9,7 @@ const config = {
|
|
|
9
9
|
'../**/*.@(mdx|stories.@(js|jsx|ts|tsx))' <% } else { %>
|
|
10
10
|
'../<%= projectDirectory %>/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'
|
|
11
11
|
<% } %>],
|
|
12
|
-
addons: [
|
|
12
|
+
addons: [<% if(uiFramework === '@storybook/react-webpack5') { %>, '@nx/react/plugins/storybook' <% } %>],
|
|
13
13
|
framework: {
|
|
14
14
|
name: '<%= uiFramework %>',
|
|
15
15
|
options: {
|
|
@@ -10,7 +10,7 @@ const config: StorybookConfig = {
|
|
|
10
10
|
'../**/*.@(mdx|stories.@(js|jsx|ts|tsx))' <% } else { %>
|
|
11
11
|
'../<%= projectDirectory %>/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'
|
|
12
12
|
<% } %>],
|
|
13
|
-
addons: [
|
|
13
|
+
addons: [<% if(uiFramework === '@storybook/react-webpack5') { %>, '@nx/react/plugins/storybook' <% } %>],
|
|
14
14
|
framework: {
|
|
15
15
|
name: '<%= uiFramework %>',
|
|
16
16
|
options: {
|
|
@@ -58,23 +58,16 @@
|
|
|
58
58
|
"description": "Storybook UI Framework to use.",
|
|
59
59
|
"enum": [
|
|
60
60
|
"@storybook/angular",
|
|
61
|
-
"@storybook/html-webpack5",
|
|
62
61
|
"@storybook/nextjs",
|
|
63
|
-
"@storybook/preact-webpack5",
|
|
64
62
|
"@storybook/react-webpack5",
|
|
65
63
|
"@storybook/react-vite",
|
|
66
64
|
"@storybook/server-webpack5",
|
|
67
|
-
"@storybook/svelte-webpack5",
|
|
68
65
|
"@storybook/svelte-vite",
|
|
69
66
|
"@storybook/sveltekit",
|
|
70
|
-
"@storybook/vue-webpack5",
|
|
71
|
-
"@storybook/vue-vite",
|
|
72
|
-
"@storybook/vue3-webpack5",
|
|
73
67
|
"@storybook/vue3-vite",
|
|
74
|
-
"@storybook/web-components-webpack5",
|
|
75
68
|
"@storybook/web-components-vite"
|
|
76
69
|
],
|
|
77
|
-
"aliases": ["
|
|
70
|
+
"aliases": ["storybook9UiFramework"],
|
|
78
71
|
"x-prompt": "Choose the Storybook framework that you need to use.",
|
|
79
72
|
"x-priority": "important",
|
|
80
73
|
"hidden": false
|
|
@@ -3,8 +3,6 @@ export declare function callUpgrade(schema: Schema): 1 | Buffer;
|
|
|
3
3
|
export declare function callAutomigrate(allStorybookProjects: {
|
|
4
4
|
[key: string]: {
|
|
5
5
|
configDir: string;
|
|
6
|
-
uiFramework: string;
|
|
7
|
-
viteConfigFilePath?: string;
|
|
8
6
|
};
|
|
9
7
|
}, schema: Schema): {
|
|
10
8
|
successfulProjects: {};
|
|
@@ -5,7 +5,8 @@ exports.callAutomigrate = callAutomigrate;
|
|
|
5
5
|
const devkit_1 = require("@nx/devkit");
|
|
6
6
|
const child_process_1 = require("child_process");
|
|
7
7
|
function callUpgrade(schema) {
|
|
8
|
-
const
|
|
8
|
+
const packageManager = (0, devkit_1.detectPackageManager)();
|
|
9
|
+
const pm = (0, devkit_1.getPackageManagerCommand)(packageManager);
|
|
9
10
|
try {
|
|
10
11
|
devkit_1.output.log({
|
|
11
12
|
title: `Calling sb upgrade`,
|
|
@@ -15,7 +16,7 @@ function callUpgrade(schema) {
|
|
|
15
16
|
],
|
|
16
17
|
color: 'blue',
|
|
17
18
|
});
|
|
18
|
-
(0, child_process_1.execSync)(`${pm.dlx} storybook@latest upgrade ${schema.autoAcceptAllPrompts ? '--yes' : ''}`, {
|
|
19
|
+
(0, child_process_1.execSync)(`${pm.dlx} ${packageManager === 'yarn' ? 'storybook' : 'storybook@latest'} upgrade ${schema.autoAcceptAllPrompts ? '--yes' : ''}`, {
|
|
19
20
|
stdio: [0, 1, 2],
|
|
20
21
|
windowsHide: false,
|
|
21
22
|
});
|
|
@@ -34,7 +35,7 @@ function callUpgrade(schema) {
|
|
|
34
35
|
bodyLines: [
|
|
35
36
|
`🚨 The Storybook CLI failed to upgrade your @storybook/* packages to the latest version.`,
|
|
36
37
|
`Please try running the sb upgrade command manually:`,
|
|
37
|
-
`${pm.exec} storybook
|
|
38
|
+
`${pm.exec} storybook@${schema.versionTag} upgrade`,
|
|
38
39
|
],
|
|
39
40
|
color: 'red',
|
|
40
41
|
});
|
|
@@ -56,8 +57,9 @@ function callAutomigrate(allStorybookProjects, schema) {
|
|
|
56
57
|
failedProjects: {},
|
|
57
58
|
};
|
|
58
59
|
Object.entries(allStorybookProjects).forEach(([projectName, storybookProjectInfo]) => {
|
|
59
|
-
const
|
|
60
|
-
const
|
|
60
|
+
const packageManager = (0, devkit_1.detectPackageManager)();
|
|
61
|
+
const pm = (0, devkit_1.getPackageManagerCommand)(packageManager);
|
|
62
|
+
const commandToRun = `${pm.dlx} storybook automigrate --config-dir ${storybookProjectInfo.configDir}`;
|
|
61
63
|
try {
|
|
62
64
|
devkit_1.output.log({
|
|
63
65
|
title: `Calling sb automigrate for ${projectName}`,
|
|
@@ -67,6 +69,10 @@ function callAutomigrate(allStorybookProjects, schema) {
|
|
|
67
69
|
(0, child_process_1.execSync)(`${commandToRun} ${schema.autoAcceptAllPrompts ? '--yes' : ''}`, {
|
|
68
70
|
stdio: 'inherit',
|
|
69
71
|
windowsHide: false,
|
|
72
|
+
env: {
|
|
73
|
+
...process.env,
|
|
74
|
+
STORYBOOK_PROJECT_ROOT: storybookProjectInfo.configDir,
|
|
75
|
+
},
|
|
70
76
|
});
|
|
71
77
|
resultOfMigration.successfulProjects[projectName] = commandToRun;
|
|
72
78
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Storybook 9 Migration Summary
|
|
2
|
+
|
|
3
|
+
## Upgrade Storybook packages
|
|
4
|
+
|
|
5
|
+
The following command was ran to upgrade the Storybook packages:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx storybook@latest upgrade
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## The Storybook automigration scripts were ran
|
|
12
|
+
|
|
13
|
+
<% if ( hasSuccessfulProjects ) { %>
|
|
14
|
+
The following commands ran successfully and your Storybook configuration was successfully migrated to the latest version 9:
|
|
15
|
+
|
|
16
|
+
<% for (let command of successfulProjects) { %>
|
|
17
|
+
- `<%= command %>`
|
|
18
|
+
<% } %>
|
|
19
|
+
|
|
20
|
+
Please make sure to check the results yourself and make sure that everything is working as expected.
|
|
21
|
+
<% } %>
|
|
22
|
+
|
|
23
|
+
<% if ( hasFailedProjects ) { %>
|
|
24
|
+
### Some migrations failed
|
|
25
|
+
|
|
26
|
+
The following commands failed and your Storybook configuration for these projects was not
|
|
27
|
+
migrated to the latest version 9:
|
|
28
|
+
|
|
29
|
+
<% for (let command of failedProjects) { %>
|
|
30
|
+
- `<%= command %>`
|
|
31
|
+
<% } %>
|
|
32
|
+
|
|
33
|
+
You can run these commands again, manually, and follow the instructions in the
|
|
34
|
+
output of these commands to migrate your Storybook configuration to the latest version 9.
|
|
35
|
+
<% } %>
|
|
36
|
+
|
|
37
|
+
Also, we may have missed something. Please make sure to check the logs of the Storybook CLI commands that were run, and look for
|
|
38
|
+
the `❌ Failed trying to evaluate` message or `❌ The migration failed to update` message. This will indicate if a command was
|
|
39
|
+
unsuccessful, and will help you run the migration again, manually.
|
|
40
|
+
|
|
41
|
+
## Next steps
|
|
42
|
+
|
|
43
|
+
You can make sure everything is working as expected by trying
|
|
44
|
+
to build or serve your Storybook as you normally would.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npx nx build-storybook project-name
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npx nx storybook project-name
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Please read the [Storybook 9.0.0 migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md)
|
|
55
|
+
for more information.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Tree } from '@nx/devkit';
|
|
2
|
+
export declare function onlyShowGuide(storybookProjects: {
|
|
3
|
+
[key: string]: {
|
|
4
|
+
configDir: string;
|
|
5
|
+
};
|
|
6
|
+
}): void;
|
|
7
|
+
export declare function getAllStorybookInfo(tree: Tree): {
|
|
8
|
+
[key: string]: {
|
|
9
|
+
configDir: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export declare function handleMigrationResult(migrateResult: {
|
|
13
|
+
successfulProjects: {};
|
|
14
|
+
failedProjects: {};
|
|
15
|
+
}, allStorybookProjects: {
|
|
16
|
+
[key: string]: {
|
|
17
|
+
configDir: string;
|
|
18
|
+
};
|
|
19
|
+
}): {
|
|
20
|
+
successfulProjects: {};
|
|
21
|
+
failedProjects: {};
|
|
22
|
+
};
|
|
23
|
+
export declare function checkStorybookInstalled(packageJson: any): boolean;
|
|
24
|
+
export declare function logResult(tree: Tree, migrationSummary: {
|
|
25
|
+
successfulProjects: {
|
|
26
|
+
[key: string]: string;
|
|
27
|
+
};
|
|
28
|
+
failedProjects: {
|
|
29
|
+
[key: string]: string;
|
|
30
|
+
};
|
|
31
|
+
}): void;
|