Enable Storybook for NX projects - Bennet303/clean-architecture-monorepo GitHub Wiki

How to enable and integrate Storybook for the NX projects

Prerequisites

  • The NX workspace is already created and configured
  • The NX project that you want to enable Storybook for already exists (i.e. frontend)

Step by Step

1. Install the storybook dependencies

npm install --dev @nrwl/storybook

2. Configure Storybook for your NX project

nx g @nrwl/angular:storybook-configuration project-name

3. Run Storybook to see if it is working properly

nx run project-name:storybook

4. Create the stories for your components

For each component that should be visible in storybook, it is neccessary to create a stories file (i.e. component-name.component.stories.ts).

This File should contain all the storybook configuration for your component.

Example:

import { moduleMetadata, Story, Meta } from '@storybook/angular';
import { HeaderComponent } from './header.component';

export default {
  title: 'Components/HeaderComponent',
  component: HeaderComponent,
  decorators: [
    moduleMetadata({
      declarations: [HeaderComponent],
    }),
  ],
} as Meta<HeaderComponent>;

const Template: Story<HeaderComponent> = (args: HeaderComponent) => ({
  component: HeaderComponent,
  props: args,
});

export const emptyHeader = Template.bind({});
emptyHeader.args = {
  title: undefined,
  size: undefined,
};
export const setHeader = Template.bind({});
setHeader.args = {
  title: 'Home Page',
  size: 'large',
};

After creating the stories file, the component should be visible in storybook.