wix-storybook-utils
Version:
Utilities for automated component documentation within Storybook
39 lines (33 loc) • 1.1 kB
JavaScript
const { default: InjectPlugin, ENTRY_ORDER } = require('webpack-inject-plugin');
const storyPattern = /\.story\.[j|t]sx?$/;
const propTypesParserInjector = () =>
"import 'wix-storybook-utils/propTypesParser';";
class WixStorybookWebpackPlugin {
constructor(options, loaderOptions) {
this.options = options;
this.loaderOptions = loaderOptions;
}
apply(compiler) {
compiler.hooks.compilation.tap('WixStorybookWebpackPlugin', compilation => {
compilation.hooks.normalModuleLoader.tap(
'WixStorybookWebpackPlugin',
(_, module) => {
if (storyPattern.test(module.userRequest)) {
module.loaders.push({
loader: require.resolve('../loader/index.js'),
options: Object.assign(
{},
{ storyConfig: this.options },
this.loaderOptions,
),
});
}
},
);
});
new InjectPlugin(propTypesParserInjector, {
entryOrder: ENTRY_ORDER.First,
}).apply(compiler);
}
}
module.exports = WixStorybookWebpackPlugin;