@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.
Files changed (43) hide show
  1. package/generators.json +6 -13
  2. package/index.d.ts +0 -2
  3. package/index.js +1 -6
  4. package/migrations.json +109 -0
  5. package/package.json +8 -5
  6. package/src/executors/build-storybook/build-storybook.impl.d.ts +1 -1
  7. package/src/executors/build-storybook/build-storybook.impl.js +6 -1
  8. package/src/executors/storybook/storybook.impl.d.ts +1 -1
  9. package/src/executors/storybook/storybook.impl.js +6 -1
  10. package/src/generators/configuration/configuration.js +3 -10
  11. package/src/generators/configuration/lib/ensure-dependencies.js +15 -13
  12. package/src/generators/configuration/lib/interaction-testing.utils.d.ts +1 -5
  13. package/src/generators/configuration/lib/interaction-testing.utils.js +0 -43
  14. package/src/generators/configuration/project-files/.storybook/main.js__tmpl__ +1 -1
  15. package/src/generators/configuration/project-files-ts/.storybook/main.ts__tmpl__ +1 -1
  16. package/src/generators/configuration/schema.json +1 -8
  17. package/src/generators/{migrate-7 → migrate-9}/calling-storybook-cli.d.ts +0 -2
  18. package/src/generators/{migrate-7 → migrate-9}/calling-storybook-cli.js +11 -5
  19. package/src/generators/migrate-9/files/storybook-migration-summary.md__tmpl__ +55 -0
  20. package/src/generators/migrate-9/helper-functions.d.ts +31 -0
  21. package/src/generators/migrate-9/helper-functions.js +142 -0
  22. package/src/generators/migrate-9/migrate-9.d.ts +4 -0
  23. package/src/generators/migrate-9/migrate-9.js +37 -0
  24. package/src/generators/{migrate-7 → migrate-9}/schema.d.ts +1 -2
  25. package/src/generators/migrate-9/schema.json +31 -0
  26. package/src/migrations/update-21-1-0/update-sb-9.d.ts +2 -0
  27. package/src/migrations/update-21-1-0/update-sb-9.js +34 -0
  28. package/src/migrations/update-21-2-0/remove-addon-dependencies.d.ts +2 -0
  29. package/src/migrations/update-21-2-0/remove-addon-dependencies.js +13 -0
  30. package/src/utils/utilities.js +5 -5
  31. package/src/utils/versions.d.ts +1 -1
  32. package/src/utils/versions.js +1 -1
  33. package/src/generators/cypress-project/cypress-project.d.ts +0 -13
  34. package/src/generators/cypress-project/cypress-project.js +0 -130
  35. package/src/generators/cypress-project/files/explicit-target/cypress.config.ts__tpl__ +0 -6
  36. package/src/generators/cypress-project/files/inferred-target/cypress.config.ts__tpl__ +0 -13
  37. package/src/generators/cypress-project/schema.json +0 -50
  38. package/src/generators/migrate-7/files/storybook-migration-summary.md__tmpl__ +0 -80
  39. package/src/generators/migrate-7/helper-functions.d.ts +0 -69
  40. package/src/generators/migrate-7/helper-functions.js +0 -445
  41. package/src/generators/migrate-7/migrate-7.d.ts +0 -4
  42. package/src/generators/migrate-7/migrate-7.js +0 -67
  43. 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.addInteractionsInAddons = exports.interactionTestsDependencies = exports.storybookVersion = exports.cypressProjectGenerator = exports.configurationGenerator = void 0;
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.2",
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.2",
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.2",
41
- "@nx/js": "21.2.0-beta.2",
42
- "@nx/eslint": "21.2.0-beta.2"
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 '@storybook/types';
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 storybookCore = await Promise.resolve().then(() => require('@storybook/core-server'));
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 '@storybook/types';
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 storybookCore = await Promise.resolve().then(() => require('@storybook/core-server'));
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 === 6) {
19
+ if (storybookMajor > 0 && storybookMajor === 7) {
21
20
  throw new Error((0, utilities_1.pleaseUpgrade)());
22
21
  }
23
- else if (storybookMajor === 7) {
24
- devkit_1.logger.warn(`Support for Storybook 7 is deprecated. Please upgrade to Storybook 8. See https://nx.dev/nx-api/storybook/generators/migrate-8 for more details.`);
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 storybook7VersionToInstall = versions_1.storybookVersion;
10
- if ((0, utilities_1.storybookMajorVersion)() >= 7 &&
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
- storybook7VersionToInstall = (0, utilities_1.getInstalledStorybookVersion)();
14
+ storybookVersionToInstall = (0, utilities_1.getInstalledStorybookVersion)();
14
15
  }
15
16
  const dependencies = {};
16
- const devDependencies = {
17
- '@storybook/core-server': storybook7VersionToInstall,
18
- '@storybook/addon-essentials': storybook7VersionToInstall,
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)(storybook7VersionToInstall), '8.0.0')) {
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] = storybook7VersionToInstall;
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] = storybook7VersionToInstall;
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'] = storybook7VersionToInstall;
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,5 +1 @@
1
- import { ProjectConfiguration, Tree } from '@nx/devkit';
2
- export declare function interactionTestsDependencies(): {
3
- [key: string]: string;
4
- };
5
- export declare function addInteractionsInAddons(tree: Tree, projectConfig: ProjectConfiguration): void;
1
+ export {};
@@ -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: ['@storybook/addon-essentials' <% if(interactionTests) { %>, '@storybook/addon-interactions' <% } %><% if(uiFramework === '@storybook/react-webpack5') { %>, '@nx/react/plugins/storybook' <% } %>],
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: ['@storybook/addon-essentials' <% if(interactionTests) { %>, '@storybook/addon-interactions' <% } %><% if(uiFramework === '@storybook/react-webpack5') { %>, '@nx/react/plugins/storybook' <% } %>],
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": ["storybook7UiFramework"],
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 pm = (0, devkit_1.getPackageManagerCommand)();
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@latest upgrade`,
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 pm = (0, devkit_1.getPackageManagerCommand)();
60
- const commandToRun = `${pm.dlx} storybook@latest automigrate --config-dir ${storybookProjectInfo.configDir} --renderer ${storybookProjectInfo.uiFramework}`;
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;