首页 > 解决方案 > Storybook 正在从 yarn/lerna monorepo 的包的 node_modules 文件夹中加载故事

问题描述

我在 lerna/yarn 工作区 monorepo 中使用故事书。我今天注意到故事书正在尝试从packages/**/node_modules/@scope/foo/stories/foo.stories.js我尝试注销 config.js 中的 require.context 键但未登录到控制台中加载故事。有没有现成的方法来告诉故事书不加载符号链接的本地node_modules?我可能错误地配置了故事书吗?这是我的配置:

import '@storybook/addon-console';
import { withA11y } from '@storybook/addon-a11y';
import { addDecorator, addParameters, configure } from '@storybook/polymer';

import theme from './my-theme'

const req = require.context('../packages', true, /\.stories\.js$/);
const load = filename =>  req(filename);

addParameters({ options: {
  panelPosition: 'right',
  theme,
} })

addDecorator(withA11y)

configure(function loadStories() {
  req.keys()
    .filter(filename => !filename.match(/packages\/.*\/node_modules/))
    .forEach(load);
}, module);

示例错误:

ERROR in ./packages/input/node_modules/@scope/collapse/stories/collapse.stories.js
Module not found: Error: Can't resolve '../../button/src/my-button' in '/Users/bennyp/Documents/web-components/packages/input/node_modules/@scope/collapse/stories'

这会导致故事书构建中断。

我如何告诉故事书不要从内部加载故事node_modules

标签: yarnpkgstorybooklernamonorepoyarn-workspaces

解决方案


以下正则表达式解决了问题

const req = require.context('../packages', true,
  /^((?![\\/]node_modules[\\/]).)*\.stories\.js$/
);

推荐阅读