1 | import WebpackDevServer from 'webpack-dev-server';
|
2 | import { Config as Args, Env } from './commands/args';
|
3 | import { BabelRC } from './utils/babel-config';
|
4 | export 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 | }
|
10 | export interface BundlerServer {
|
11 | start(): Promise<WebpackDevServer>;
|
12 | }
|
13 | export declare type ConfigFn<C> = (babelrc: BabelRC, hooks: ServerHooks) => Promise<C>;
|
14 | export declare type BuildFn<C> = (config: C, dist: string, publicDir: string) => void;
|
15 | export declare type ServerFn<C> = (config: C, hooks: ServerHooks) => BundlerServer | Promise<BundlerServer>;
|
16 | export interface BundlerConstructor<Config> {
|
17 | args: Args;
|
18 | config: ConfigFn<Config>;
|
19 | server: ServerFn<Config>;
|
20 | build: BuildFn<Config>;
|
21 | }
|
22 | export interface ConfigObj {
|
23 | [key: string]: any;
|
24 | }
|
25 | export 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 | }
|