UNPKG

1.3 kBTypeScriptView Raw
1import WebpackDevServer from 'webpack-dev-server';
2import { Config as Args, Env } from './commands/args';
3import { BabelRC } from './utils/babel-config';
4export interface ServerHooks {
5 onCreateWebpackChain<C>(config: C, dev: boolean, args: Args): void;
6 onPreCreateApp<A>(app: A): void;
7 onCreateApp<A>(app: A): void;
8 onServerListening<S>(server: S): void;
9}
10export interface BundlerServer {
11 start(): Promise<WebpackDevServer>;
12}
13export declare type ConfigFn<C> = (babelrc: BabelRC, hooks: ServerHooks) => Promise<C>;
14export declare type BuildFn<C> = (config: C, dist: string, publicDir: string) => void;
15export declare type ServerFn<C> = (config: C, hooks: ServerHooks) => BundlerServer | Promise<BundlerServer>;
16export interface BundlerConstructor<Config> {
17 args: Args;
18 config: ConfigFn<Config>;
19 server: ServerFn<Config>;
20 build: BuildFn<Config>;
21}
22export interface ConfigObj {
23 [key: string]: any;
24}
25export declare class Bundler<C = ConfigObj> {
26 private readonly args;
27 private config;
28 private server;
29 private builder;
30 private hooks;
31 constructor(params: BundlerConstructor<C>);
32 mountConfig(env: Env): Promise<C>;
33 createApp(config: C): Promise<BundlerServer>;
34 build(config: C): Promise<void>;
35}