UNPKG

@anansi/webpack-config

Version:
111 lines (106 loc) 15.4 kB
"use strict"; exports.__esModule = true; exports.default = makeStorybookConfigGenerator; function makeStorybookConfigGenerator(baseConfig) { return ({ config: storybookConfig, mode }) => { const env = mode.toLowerCase(); const argv = { mode: env }; const envConfig = typeof baseConfig === 'function' ? baseConfig(env, argv) : baseConfig; // we need some of their plugins (https://github.com/storybooks/storybook/pull/1775/files) const storybookPlugins = storybookConfig.plugins.filter(plugin => // exclude ones we configure !['DefinePlugin', 'EnvironmentPlugin', 'ReactRefreshPlugin', //'HotModuleReplacementPlugin', since storybook 6.4 we need this again 'CaseSensitivePathsPlugin', // this makes process redundant 'ProvidePlugin'].includes(plugin.constructor.name)); const basePlugins = envConfig.plugins.filter(plugin => // defer to storybook's version in this case // TODO: try to simply copy configuration and reuse our HtmlWebpackPlugin ![ // storybook runs this build after building the storybook chrome ui, so we don't want to clear that out // they also clean the directory in that stage anyway 'CleanWebpackPlugin', 'HtmlWebpackPlugin', 'ErrorOverlayPlugin', 'StatsPlugin', // storybook puts .cache in node_modules so this prevents infinite loop 'WatchMissingNodeModulesPlugin'].includes(plugin.constructor.name)); // included rules: // - .mdx // - acorn-jsx node_modules rule // - any storybook specific loaders const isStorybookSpecific = loader => /@storybook\/[^/-]+-loader\//.test(loader); const storybookRules = storybookConfig.module.rules.filter(rule => { if (rule.test?.test?.('test.mdx') || rule.test?.test?.('test.story.mdx')) return true; if (rule.include instanceof RegExp && rule.include.test('node_modules/acorn-jsx/')) return true; if (rule.loader) { return isStorybookSpecific(rule.loader); } else if (rule.use) { return rule.use.find(loadConfig => { const loader = typeof loadConfig === 'string' ? loadConfig : loadConfig.loader; return isStorybookSpecific(loader); }); } else { return false; } }); // this transforms storybook node_modules files...not sure why this isn't done at publish time const libraryRule = storybookConfig.module.rules[1]; // don't run this on our project source libraryRule.exclude = [envConfig?.resolve?.modules?.[0]]; // storybook doesn't like us setting this very much. delete envConfig.devServer; const config = { watchOptions: storybookConfig.watchOptions, ...envConfig, resolveLoader: { ...envConfig.resolveLoader, plugins: [...(envConfig.resolveLoader?.plugins ?? []), ...(storybookConfig.resolveLoader?.plugins ?? [])] }, resolve: { ...storybookConfig.resolve, modules: envConfig.resolve.modules, extensions: envConfig.resolve.extensions, alias: { ...envConfig.resolve.alias, ...storybookConfig.resolve.alias }, plugins: [...(envConfig.resolve?.plugins ?? []), ...(storybookConfig.resolve?.plugins ?? [])] }, entry: storybookConfig.entry, output: storybookConfig.output, plugins: [...storybookPlugins, ...basePlugins], module: { ...envConfig.module, rules: [ // js rules (worker and normal) { test: envConfig.module.rules[0].test, exclude: /storybook-stories.js/, rules: [envConfig.module.rules[0]] }, // storybook node_module compiles libraryRule, // the rest of our rules ...envConfig.module.rules.slice(1), // typically these are various plugins ...storybookRules] } }; if (envConfig.cache) { if (typeof envConfig.cache === 'object' && envConfig.cache.type === 'filesystem') { config.cache = { ...envConfig.cache, version: envConfig.cache.version + 'storybook' }; } else { config.cache = envConfig.cache; } } return config; }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYWtlU3Rvcnlib29rQ29uZmlnR2VuZXJhdG9yIiwiYmFzZUNvbmZpZyIsImNvbmZpZyIsInN0b3J5Ym9va0NvbmZpZyIsIm1vZGUiLCJlbnYiLCJ0b0xvd2VyQ2FzZSIsImFyZ3YiLCJlbnZDb25maWciLCJzdG9yeWJvb2tQbHVnaW5zIiwicGx1Z2lucyIsImZpbHRlciIsInBsdWdpbiIsImluY2x1ZGVzIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiYmFzZVBsdWdpbnMiLCJpc1N0b3J5Ym9va1NwZWNpZmljIiwibG9hZGVyIiwidGVzdCIsInN0b3J5Ym9va1J1bGVzIiwibW9kdWxlIiwicnVsZXMiLCJydWxlIiwiaW5jbHVkZSIsIlJlZ0V4cCIsInVzZSIsImZpbmQiLCJsb2FkQ29uZmlnIiwibGlicmFyeVJ1bGUiLCJleGNsdWRlIiwicmVzb2x2ZSIsIm1vZHVsZXMiLCJkZXZTZXJ2ZXIiLCJ3YXRjaE9wdGlvbnMiLCJyZXNvbHZlTG9hZGVyIiwiZXh0ZW5zaW9ucyIsImFsaWFzIiwiZW50cnkiLCJvdXRwdXQiLCJzbGljZSIsImNhY2hlIiwidHlwZSIsInZlcnNpb24iXSwic291cmNlcyI6WyIuLi9zcmMvc3Rvcnlib29rLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1ha2VTdG9yeWJvb2tDb25maWdHZW5lcmF0b3IoYmFzZUNvbmZpZykge1xuICByZXR1cm4gKHsgY29uZmlnOiBzdG9yeWJvb2tDb25maWcsIG1vZGUgfSkgPT4ge1xuICAgIGNvbnN0IGVudiA9IG1vZGUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBhcmd2ID0geyBtb2RlOiBlbnYgfTtcbiAgICBjb25zdCBlbnZDb25maWcgPVxuICAgICAgdHlwZW9mIGJhc2VDb25maWcgPT09ICdmdW5jdGlvbicgPyBiYXNlQ29uZmlnKGVudiwgYXJndikgOiBiYXNlQ29uZmlnO1xuXG4gICAgLy8gd2UgbmVlZCBzb21lIG9mIHRoZWlyIHBsdWdpbnMgKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9yeWJvb2tzL3N0b3J5Ym9vay9wdWxsLzE3NzUvZmlsZXMpXG4gICAgY29uc3Qgc3Rvcnlib29rUGx1Z2lucyA9IHN0b3J5Ym9va0NvbmZpZy5wbHVnaW5zLmZpbHRlcihcbiAgICAgIHBsdWdpbiA9PlxuICAgICAgICAvLyBleGNsdWRlIG9uZXMgd2UgY29uZmlndXJlXG4gICAgICAgICFbXG4gICAgICAgICAgJ0RlZmluZVBsdWdpbicsXG4gICAgICAgICAgJ0Vudmlyb25tZW50UGx1Z2luJyxcbiAgICAgICAgICAnUmVhY3RSZWZyZXNoUGx1Z2luJyxcbiAgICAgICAgICAvLydIb3RNb2R1bGVSZXBsYWNlbWVudFBsdWdpbicsIHNpbmNlIHN0b3J5Ym9vayA2LjQgd2UgbmVlZCB0aGlzIGFnYWluXG4gICAgICAgICAgJ0Nhc2VTZW5zaXRpdmVQYXRoc1BsdWdpbicsXG4gICAgICAgICAgLy8gdGhpcyBtYWtlcyBwcm9jZXNzIHJlZHVuZGFudFxuICAgICAgICAgICdQcm92aWRlUGx1Z2luJyxcbiAgICAgICAgXS5pbmNsdWRlcyhwbHVnaW4uY29uc3RydWN0b3IubmFtZSksXG4gICAgKTtcbiAgICBjb25zdCBiYXNlUGx1Z2lucyA9IGVudkNvbmZpZy5wbHVnaW5zLmZpbHRlcihcbiAgICAgIHBsdWdpbiA9PlxuICAgICAgICAvLyBkZWZlciB0byBzdG9yeWJvb2sncyB2ZXJzaW9uIGluIHRoaXMgY2FzZVxuICAgICAgICAvLyBUT0RPOiB0cnkgdG8gc2ltcGx5IGNvcHkgY29uZmlndXJhdGlvbiBhbmQgcmV1c2Ugb3VyIEh0bWxXZWJwYWNrUGx1Z2luXG4gICAgICAgICFbXG4gICAgICAgICAgLy8gc3Rvcnlib29rIHJ1bnMgdGhpcyBidWlsZCBhZnRlciBidWlsZGluZyB0aGUgc3Rvcnlib29rIGNocm9tZSB1aSwgc28gd2UgZG9uJ3Qgd2FudCB0byBjbGVhciB0aGF0IG91dFxuICAgICAgICAgIC8vIHRoZXkgYWxzbyBjbGVhbiB0aGUgZGlyZWN0b3J5IGluIHRoYXQgc3RhZ2UgYW55d2F5XG4gICAgICAgICAgJ0NsZWFuV2VicGFja1BsdWdpbicsXG4gICAgICAgICAgJ0h0bWxXZWJwYWNrUGx1Z2luJyxcbiAgICAgICAgICAnRXJyb3JPdmVybGF5UGx1Z2luJyxcbiAgICAgICAgICAnU3RhdHNQbHVnaW4nLFxuICAgICAgICAgIC8vIHN0b3J5Ym9vayBwdXRzIC5jYWNoZSBpbiBub2RlX21vZHVsZXMgc28gdGhpcyBwcmV2ZW50cyBpbmZpbml0ZSBsb29wXG4gICAgICAgICAgJ1dhdGNoTWlzc2luZ05vZGVNb2R1bGVzUGx1Z2luJyxcbiAgICAgICAgXS5pbmNsdWRlcyhwbHVnaW4uY29uc3RydWN0b3IubmFtZSksXG4gICAgKTtcblxuICAgIC8vIGluY2x1ZGVkIHJ1bGVzOlxuICAgIC8vIC0gLm1keFxuICAgIC8vIC0gYWNvcm4tanN4IG5vZGVfbW9kdWxlcyBydWxlXG4gICAgLy8gLSBhbnkgc3Rvcnlib29rIHNwZWNpZmljIGxvYWRlcnNcbiAgICBjb25zdCBpc1N0b3J5Ym9va1NwZWNpZmljID0gbG9hZGVyID0+XG4gICAgICAvQHN0b3J5Ym9va1xcL1teLy1dKy1sb2FkZXJcXC8vLnRlc3QobG9hZGVyKTtcbiAgICBjb25zdCBzdG9yeWJvb2tSdWxlcyA9IHN0b3J5Ym9va0NvbmZpZy5tb2R1bGUucnVsZXMuZmlsdGVyKHJ1bGUgPT4ge1xuICAgICAgaWYgKHJ1bGUudGVzdD8udGVzdD8uKCd0ZXN0Lm1keCcpIHx8IHJ1bGUudGVzdD8udGVzdD8uKCd0ZXN0LnN0b3J5Lm1keCcpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmIChcbiAgICAgICAgcnVsZS5pbmNsdWRlIGluc3RhbmNlb2YgUmVnRXhwICYmXG4gICAgICAgIHJ1bGUuaW5jbHVkZS50ZXN0KCdub2RlX21vZHVsZXMvYWNvcm4tanN4LycpXG4gICAgICApXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgaWYgKHJ1bGUubG9hZGVyKSB7XG4gICAgICAgIHJldHVybiBpc1N0b3J5Ym9va1NwZWNpZmljKHJ1bGUubG9hZGVyKTtcbiAgICAgIH0gZWxzZSBpZiAocnVsZS51c2UpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUudXNlLmZpbmQobG9hZENvbmZpZyA9PiB7XG4gICAgICAgICAgY29uc3QgbG9hZGVyID1cbiAgICAgICAgICAgIHR5cGVvZiBsb2FkQ29uZmlnID09PSAnc3RyaW5nJyA/IGxvYWRDb25maWcgOiBsb2FkQ29uZmlnLmxvYWRlcjtcbiAgICAgICAgICByZXR1cm4gaXNTdG9yeWJvb2tTcGVjaWZpYyhsb2FkZXIpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIHRoaXMgdHJhbnNmb3JtcyBzdG9yeWJvb2sgbm9kZV9tb2R1bGVzIGZpbGVzLi4ubm90IHN1cmUgd2h5IHRoaXMgaXNuJ3QgZG9uZSBhdCBwdWJsaXNoIHRpbWVcbiAgICBjb25zdCBsaWJyYXJ5UnVsZSA9IHN0b3J5Ym9va0NvbmZpZy5tb2R1bGUucnVsZXNbMV07XG4gICAgLy8gZG9uJ3QgcnVuIHRoaXMgb24gb3VyIHByb2plY3Qgc291cmNlXG4gICAgbGlicmFyeVJ1bGUuZXhjbHVkZSA9IFtlbnZDb25maWc/LnJlc29sdmU/Lm1vZHVsZXM/LlswXV07XG5cbiAgICAvLyBzdG9yeWJvb2sgZG9lc24ndCBsaWtlIHVzIHNldHRpbmcgdGhpcyB2ZXJ5IG11Y2guXG4gICAgZGVsZXRlIGVudkNvbmZpZy5kZXZTZXJ2ZXI7XG5cbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICB3YXRjaE9wdGlvbnM6IHN0b3J5Ym9va0NvbmZpZy53YXRjaE9wdGlvbnMsXG4gICAgICAuLi5lbnZDb25maWcsXG4gICAgICByZXNvbHZlTG9hZGVyOiB7XG4gICAgICAgIC4uLmVudkNvbmZpZy5yZXNvbHZlTG9hZGVyLFxuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgLi4uKGVudkNvbmZpZy5yZXNvbHZlTG9hZGVyPy5wbHVnaW5zID8/IFtdKSxcbiAgICAgICAgICAuLi4oc3Rvcnlib29rQ29uZmlnLnJlc29sdmVMb2FkZXI/LnBsdWdpbnMgPz8gW10pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgLi4uc3Rvcnlib29rQ29uZmlnLnJlc29sdmUsXG4gICAgICAgIG1vZHVsZXM6IGVudkNvbmZpZy5yZXNvbHZlLm1vZHVsZXMsXG4gICAgICAgIGV4dGVuc2lvbnM6IGVudkNvbmZpZy5yZXNvbHZlLmV4dGVuc2lvbnMsXG4gICAgICAgIGFsaWFzOiB7IC4uLmVudkNvbmZpZy5yZXNvbHZlLmFsaWFzLCAuLi5zdG9yeWJvb2tDb25maWcucmVzb2x2ZS5hbGlhcyB9LFxuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgLi4uKGVudkNvbmZpZy5yZXNvbHZlPy5wbHVnaW5zID8/IFtdKSxcbiAgICAgICAgICAuLi4oc3Rvcnlib29rQ29uZmlnLnJlc29sdmU/LnBsdWdpbnMgPz8gW10pLFxuICAgICAgICBdLFxuICAgICAgfSxcblxuICAgICAgZW50cnk6IHN0b3J5Ym9va0NvbmZpZy5lbnRyeSxcbiAgICAgIG91dHB1dDogc3Rvcnlib29rQ29uZmlnLm91dHB1dCxcbiAgICAgIHBsdWdpbnM6IFsuLi5zdG9yeWJvb2tQbHVnaW5zLCAuLi5iYXNlUGx1Z2luc10sXG4gICAgICBtb2R1bGU6IHtcbiAgICAgICAgLi4uZW52Q29uZmlnLm1vZHVsZSxcbiAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAvLyBqcyBydWxlcyAod29ya2VyIGFuZCBub3JtYWwpXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGVzdDogZW52Q29uZmlnLm1vZHVsZS5ydWxlc1swXS50ZXN0LFxuICAgICAgICAgICAgZXhjbHVkZTogL3N0b3J5Ym9vay1zdG9yaWVzLmpzLyxcbiAgICAgICAgICAgIHJ1bGVzOiBbZW52Q29uZmlnLm1vZHVsZS5ydWxlc1swXV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBzdG9yeWJvb2sgbm9kZV9tb2R1bGUgY29tcGlsZXNcbiAgICAgICAgICBsaWJyYXJ5UnVsZSxcbiAgICAgICAgICAvLyB0aGUgcmVzdCBvZiBvdXIgcnVsZXNcbiAgICAgICAgICAuLi5lbnZDb25maWcubW9kdWxlLnJ1bGVzLnNsaWNlKDEpLFxuICAgICAgICAgIC8vIHR5cGljYWxseSB0aGVzZSBhcmUgdmFyaW91cyBwbHVnaW5zXG4gICAgICAgICAgLi4uc3Rvcnlib29rUnVsZXMsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG4gICAgaWYgKGVudkNvbmZpZy5jYWNoZSkge1xuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZW52Q29uZmlnLmNhY2hlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBlbnZDb25maWcuY2FjaGUudHlwZSA9PT0gJ2ZpbGVzeXN0ZW0nXG4gICAgICApIHtcbiAgICAgICAgY29uZmlnLmNhY2hlID0ge1xuICAgICAgICAgIC4uLmVudkNvbmZpZy5jYWNoZSxcbiAgICAgICAgICB2ZXJzaW9uOiBlbnZDb25maWcuY2FjaGUudmVyc2lvbiArICdzdG9yeWJvb2snLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uZmlnLmNhY2hlID0gZW52Q29uZmlnLmNhY2hlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29uZmlnO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQWUsU0FBU0EsNEJBQTRCQSxDQUFDQyxVQUFVLEVBQUU7RUFDL0QsT0FBTyxDQUFDO0lBQUVDLE1BQU0sRUFBRUMsZUFBZTtJQUFFQztFQUFLLENBQUMsS0FBSztJQUM1QyxNQUFNQyxHQUFHLEdBQUdELElBQUksQ0FBQ0UsV0FBVyxDQUFDLENBQUM7SUFDOUIsTUFBTUMsSUFBSSxHQUFHO01BQUVILElBQUksRUFBRUM7SUFBSSxDQUFDO0lBQzFCLE1BQU1HLFNBQVMsR0FDYixPQUFPUCxVQUFVLEtBQUssVUFBVSxHQUFH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Q0FBQ3VCLE9BQU8sQ0FBQ0ssVUFBVTtRQUN4Q0MsS0FBSyxFQUFFO1VBQUUsR0FBRzdCLFNBQVMsQ0FBQ3VCLE9BQU8sQ0FBQ00sS0FBSztVQUFFLEdBQUdsQyxlQUFlLENBQUM0QixPQUFPLENBQUNNO1FBQU0sQ0FBQztRQUN2RTNCLE9BQU8sRUFBRSxDQUNQLElBQUlGLFNBQVMsQ0FBQ3VCLE9BQU8sRUFBRXJCLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFDckMsSUFBSVAsZUFBZSxDQUFDNEIsT0FBTyxFQUFFckIsT0FBTyxJQUFJLEVBQUUsQ0FBQztNQUUvQyxDQUFDO01BRUQ0QixLQUFLLEVBQUVuQyxlQUFlLENBQUNtQyxLQUFLO01BQzVCQyxNQUFNLEVBQUVwQyxlQUFlLENBQUNvQyxNQUFNO01BQzlCN0IsT0FBTyxFQUFFLENBQUMsR0FBR0QsZ0JBQWdCLEVBQUUsR0FBR08sV0FBVyxDQUFDO01BQzlDSyxNQUFNLEVBQUU7UUFDTixHQUFHYixTQUFTLENBQUNhLE1BQU07UUFDbkJDLEtBQUssRUFBRTtRQUNMO1FBQ0E7VUFDRUgsSUFBSSxFQUFFWCxTQUFTLENBQUNhLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDSCxJQUFJO1VBQ3BDVyxPQUFPLEVBQUUsc0JBQXNCO1VBQy9CUixLQUFLLEVBQUUsQ0FBQ2QsU0FBUyxDQUFDYSxNQUFNLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNEO1FBQ0FPLFdBQVc7UUFDWDtRQUNBLEdBQUdyQixTQUFTLENBQUNhLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDa0IsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNsQztRQUNBLEdBQUdwQixjQUFjO01BRXJCO0lBQ0YsQ0FBQztJQUNELElBQUlaLFNBQVMsQ0FBQ2lDLEtBQUssRUFBRTtNQUNuQixJQUNFLE9BQU9qQyxTQUFTLENBQUNpQyxLQUFLLEtBQUssUUFBUSxJQUNuQ2pDLFNBQVMsQ0FBQ2lDLEtBQUssQ0FBQ0MsSUFBSSxLQUFLLFlBQVksRUFDckM7UUFDQXhDLE1BQU0sQ0FBQ3VDLEtBQUssR0FBRztVQUNiLEdBQUdqQyxTQUFTLENBQUNpQyxLQUFLO1VBQ2xCRSxPQUFPLEVBQUVuQyxTQUFTLENBQUNpQyxLQUFLLENBQUNFLE9BQU8sR0FBRztRQUNyQyxDQUFDO01BQ0gsQ0FBQyxNQUFNO1FBQ0x6QyxNQUFNLENBQUN1QyxLQUFLLEdBQUdqQyxTQUFTLENBQUNpQyxLQUFLO01BQ2hDO0lBQ0Y7SUFDQSxPQUFPdkMsTUFBTTtFQUNmLENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==