Skip to content

The @nx/storybook plugin provides various executors to help you create and configure storybook projects within your Nx workspace. Below is a complete reference for all available executors and their options.

build

Build storybook in production mode.

project.json:

//...
"ui": {
"targets": {
//...
"build-storybook": {
"executor": "@nx/storybook:build",
"outputs": ["{options.outputDir}"],
"options": {
"outputDir": "dist/storybook/ui",
"configDir": "libs/ui/.storybook"
},
"configurations": {
"ci": {
"quiet": true
}
}
}
}
Terminal window
nx run ui:build-storybook

Examples

For non-Angular projects

{% tabs %} {% tab label=“Working in docsMode” %}

You can work in docs mode, building a documentation-only site, by setting the docsMode option to true and using the @storybook/addon-docs addon.

Read more on the Storybook documentation page for addon-docs.

"storybook": {
"executor": "@nx/storybook:build",
"options": {
"port": 4400,
"configDir": "libs/ui/.storybook",
"docsMode": true
},
"configurations": {
"ci": {
"quiet": true
}
}
}

{% /tab %}

{% /tabs %}

For Angular projects

{% tabs %} {% tab label=“Default configuration” %}

This is the default configuration for Angular projects using Storybook. You can see that it uses the native @storybook/angular:build-storybook executor. You can read more about the configuration options at the relevant Storybook documentation page.

"build-storybook": {
"executor": "@storybook/angular:build-storybook",
"outputs": ["{options.outputDir}"],
"options": {
"outputDir": "dist/storybook/ngapp",
"configDir": "apps/ngapp/.storybook",
"browserTarget": "ngapp:build",
"compodoc": false
},
"configurations": {
"ci": {
"quiet": true
}
}
}

{% /tab %} {% tab label=“Changing the browserTarget” %}

You can set the browserTarget to use build-storybook as the builder. This is most useful in the cases where your project does not have a build target. Read more about the browserTarget in the Set up Storybook for Angular Projects recipe.

"build-storybook": {
"executor": "@storybook/angular:build-storybook",
"outputs": ["{options.outputDir}"],
"options": {
"outputDir": "dist/storybook/ngapp",
"configDir": "apps/ngapp/.storybook",
"browserTarget": "ngapp:build-storybook",
"compodoc": false
},
"configurations": {
"ci": {
"quiet": true
}
}
}

{% /tab %}

{% tab label=“Adding styles” %}

You can add paths to stylesheets to be included in the Storybook build by using the styles array. You can also add stylePreprocessorOptions, much like you would do in the Angular builder. You can read more in our guide about styles and preprocessor options for Storybook.

"build-storybook": {
"executor": "@storybook/angular:build-storybook",
"outputs": ["{options.outputDir}"],
"options": {
"outputDir": "dist/storybook/ngapp",
"configDir": "apps/ngapp/.storybook",
"browserTarget": "ngapp:build-storybook",
"compodoc": false,
"styles": ["some-styles.css"],
"stylePreprocessorOptions": {
"includePaths": ["some-style-paths"]
}
},
"configurations": {
"ci": {
"quiet": true
}
}
}

{% /tab %}

{% /tabs %}

Options

OptionTypeDescriptionDefault
configDirstring [required]Directory where to load Storybook configurations from.
debugWebpackbooleanDisplay final webpack configurations for debugging purposes.
disableTelemetrybooleanDisables Storybook’s telemetry.
docsbooleanStarts Storybook in documentation mode. Learn more about it : https://storybook.js.org/docs/react/writing-docs/build-documentation#preview-storybooks-documentation.
docsModebooleanBuild a documentation-only site using addon-docs.false
loglevelstringControls level of logging during build. Can be one of: [silly, verbose, info (default), warn, error, silent].
outputDirstringDirectory where to store built files.
quietbooleanSuppress verbose build output.
staticDirarrayDirectory where to load static files from, array of strings.
stylePreprocessorOptionsobjectOptions to pass to style preprocessors.
stylesarrayGlobal styles to be included in the build.
webpackStatsJsonbooleanstringWrite Webpack Stats JSON to disk.

storybook

Serve up Storybook in development mode.

project.json:

//...
"ui": {
"targets": {
//...
"storybook": {
"executor": "@nx/storybook:storybook",
"options": {
"port": 4400,
"configDir": "libs/ui/.storybook"
},
"configurations": {
"ci": {
"quiet": true
}
}
},
}
}
Terminal window
nx run ui:storybook

Examples

For non-Angular projects

{% tabs %} {% tab label=“Working in docsMode” %}

You can work in docs mode, building a documentation-only site, by setting the docsMode option to true and using the @storybook/addon-docs addon.

Read more on the Storybook documentation page for addon-docs.

"storybook": {
"executor": "@nx/storybook:storybook",
"options": {
"port": 4400,
"configDir": "libs/ui/.storybook",
"docsMode": true
},
"configurations": {
"ci": {
"quiet": true
}
}
}

{% /tab %}

{% /tabs %}

For Angular projects

{% tabs %} {% tab label=“Default configuration” %}

This is the default configuration for Angular projects using Storybook. You can see that it uses the native @storybook/angular:start-storybook executor. You can read more about the configuration options at the relevant Storybook documentation page.

"storybook": {
"executor": "@storybook/angular:start-storybook",
"options": {
"port": 4400,
"configDir": "libs/ui/.storybook",
"browserTarget": "ui:build",
"compodoc": false
},
"configurations": {
"ci": {
"quiet": true
}
}
},

{% /tab %} {% tab label=“Changing the browserTarget” %}

You can set the browserTarget to use build-storybook as the builder. This is most useful in the cases where your project does not have a build target. Read more about the browserTarget in the Set up Storybook for Angular Projects recipe.

"storybook": {
"executor": "@storybook/angular:start-storybook",
"options": {
"port": 4400,
"configDir": "libs/ui/.storybook",
"browserTarget": "ui:build-storybook",
"compodoc": false
},
"configurations": {
"ci": {
"quiet": true
}
}
},

{% /tab %}

{% tab label=“Adding styles” %}

You can add paths to stylesheets to be included in the Storybook build by using the styles array. You can also add stylePreprocessorOptions, much like you would do in the Angular builder. You can read more in our guide about styles and preprocessor options for Storybook.

"storybook": {
"executor": "@storybook/angular:start-storybook",
"options": {
"port": 4400,
"configDir": "libs/ui/.storybook",
"browserTarget": "ui:build",
"compodoc": false,
"styles": ["some-styles.css"],
"stylePreprocessorOptions": {
"includePaths": ["some-style-paths"]
}
},
"configurations": {
"ci": {
"quiet": true
}
}
},

{% /tab %}

{% /tabs %}

Options

OptionTypeDescriptionDefault
configDirstring [required]Directory where to load Storybook configurations from.
cibooleanCI mode (skip interactive prompts, don’t open browser).false
debugWebpackbooleanDisplay final webpack configurations for debugging purposes.
disableTelemetrybooleanDisables Storybook’s telemetry.
docsbooleanStarts Storybook in documentation mode. Learn more about it : https://storybook.js.org/docs/react/writing-docs/build-documentation#preview-storybooks-documentation.
docsModebooleanStarts Storybook in documentation mode. Learn more about it : https://storybook.js.org/docs/react/writing-docs/build-documentation#preview-storybooks-documentation.false
hoststringHost to listen on.
httpsbooleanServe Storybook over HTTPS. Note: You must provide your own certificate information.false
loglevelstringControls level of logging during build. Can be one of: [silly, verbose, info (default), warn, error, silent].
noOpenbooleanDo not open Storybook automatically in the browser.
openbooleanOpen browser window automatically.
portnumberPort to listen on.9009
previewUrlstringPreview URL.
quietbooleanSuppress verbose build output.
smokeTestbooleanExit after successful start.
sslCastringProvide an SSL certificate authority. (Optional with —https, required if using a self-signed certificate).
sslCertstringProvide an SSL certificate. (Required with —https).
sslKeystringProvide an SSL key. (Required with —https).
staticDirarrayDirectory where to load static files from, array of strings.
uiFrameworkstringStorybook framework npm package.
webpackStatsJsonbooleanstringWrite Webpack Stats JSON to disk.