@anansi/webpack-config
Version:
Production ready webpack for React
58 lines (55 loc) • 2.02 kB
TypeScript
import type { TransformOptions } from '@babel/core';
import type { LoaderOptions as WYWOptions } from '@wyw-in-js/webpack-loader';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import { PluginOptions as MiniCssExtractPluginOptions } from 'mini-css-extract-plugin';
import type { Options as SassOptions } from 'sass-loader';
import type { Config as OptimizeOptions } from 'svgo';
import type { Options as TsconfigPathsOptions } from 'tsconfig-paths-webpack-plugin/lib/options';
import type {
Configuration,
RuleSetUseItem,
RuleSetConditionAbsolute,
} from 'webpack';
import type { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
export interface Options {
rootPath?: string;
basePath?: string;
babelRoot?: string;
libraryInclude?: RuleSetConditionAbsolute;
libraryExclude?: RuleSetConditionAbsolute;
buildDir?: string;
serverDir?: string;
manifestFilename?: string;
mode?: Configuration['mode'];
nohash?: boolean;
argv?: any[];
env?: any;
htmlOptions?: HtmlWebpackPlugin.Options | false;
svgoOptions?: OptimizeOptions | false;
svgrOptions?:
| { svgoConfig?: OptimizeOptions; [key: string]: unknown }
| false;
inJSOptions?: WYWOptions | false;
cssExtractOptions?: MiniCssExtractPluginOptions | false;
tsconfigPathsOptions?: TsconfigPathsOptions | false;
globalStyleDir?: string | false;
sassOptions?: SassOptions | false;
sassResources?: string[];
cssModuleOptions?: any;
fontPreload?: 'preload' | 'prefetch';
bundleAnalyzerOptions?: BundleAnalyzerPlugin.Options;
babelLoader?: TransformOptions & {
cacheDirectory?: string;
cacheIdentifier?: any;
cacheCompression?: boolean;
customize?: any;
metadataSubscribers?: any[];
}; // babel loader options
extraJsLoaders?: RuleSetUseItem[];
}
export function makeConfig(
options: Options,
): (env: any, argv: any[]) => Configuration;
export function makeStorybookConfigGenerator(
baseConfig: Configuration,
): ({ config: Configuration, mode: string }) => Configuration;