故事书正在从yarn / lerna monorepo的packages的node_modules文件夹中加载故事

时间:2019-05-29 05:47:16

标签: yarnpkg storybook lerna monorepo yarn-workspaces

我在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加载故事?

1 个答案:

答案 0 :(得分:0)

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

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