diff --git a/packages/storybook/src/generators/init/init.spec.ts b/packages/storybook/src/generators/init/init.spec.ts index 36338752e5e42..7c76df1b55fb1 100644 --- a/packages/storybook/src/generators/init/init.spec.ts +++ b/packages/storybook/src/generators/init/init.spec.ts @@ -3,6 +3,8 @@ import { type NxJsonConfiguration, type Tree, ProjectGraph, + updateNxJson, + readNxJson, } from '@nx/devkit'; import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; import { initGenerator } from './init'; @@ -56,4 +58,30 @@ describe('@nx/storybook:init', () => { }); expect(tree.read('.gitignore', 'utf-8')).toMatchSnapshot(); }); + + it('should not duplicate cacheable operations in nx.json', async () => { + // ARRANGE + const nxJson = readNxJson(tree); + nxJson.tasksRunnerOptions ??= {}; + nxJson.tasksRunnerOptions.default ??= {}; + nxJson.tasksRunnerOptions.default.options ??= {}; + nxJson.tasksRunnerOptions.default.options.cacheableOperations = [ + 'build-storybook', + ]; + updateNxJson(tree, nxJson); + + // ACT + await initGenerator(tree, { + addPlugin: false, + }); + + // ASSERT + const updatedNxJson = readNxJson(tree); + expect(updatedNxJson.tasksRunnerOptions.default.options.cacheableOperations) + .toMatchInlineSnapshot(` + [ + "build-storybook", + ] + `); + }); }); diff --git a/packages/storybook/src/generators/init/init.ts b/packages/storybook/src/generators/init/init.ts index de90427a8269d..452031928ea72 100644 --- a/packages/storybook/src/generators/init/init.ts +++ b/packages/storybook/src/generators/init/init.ts @@ -57,7 +57,7 @@ function addCacheableOperation(tree: Tree) { const cacheableOperations: string[] | null = nxJson.tasksRunnerOptions?.default?.options?.cacheableOperations; - if (cacheableOperations && cacheableOperations.includes('build-storybook')) { + if (cacheableOperations && !cacheableOperations.includes('build-storybook')) { nxJson.tasksRunnerOptions.default.options.cacheableOperations.push( 'build-storybook' );