feat: Add webpack-dev-middleware (#14002)

This commit is contained in:
bumbleblym
2017-01-14 05:19:37 +08:00
committed by Sheetal Nandi
parent 90dd89f0a4
commit 0f756aca16
4 changed files with 103 additions and 0 deletions

49
webpack-dev-middleware/index.d.ts vendored Normal file
View File

@@ -0,0 +1,49 @@
// Type definitions for webpack-dev-middleware 1.9
// Project: http://github.com/webpack/webpack-dev-middleware
// Definitions by: Benjamin Lim <https://github.com/bumbleblym>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
import { NextHandleFunction } from 'connect';
import { compiler } from 'webpack';
export = WebpackDevMiddleware;
declare function WebpackDevMiddleware(compiler: compiler.Compiler, options: WebpackDevMiddleware.Options): WebpackDevMiddleware.WebpackDevMiddleware & NextHandleFunction;
declare namespace WebpackDevMiddleware {
interface Options {
noInfo?: boolean;
quiet?: boolean;
lazy?: boolean;
watchOptions?: compiler.WatchOptions;
publicPath: string;
index?: string;
headers?: {
[name: string]: string;
};
stats?: compiler.StatsToStringOptions;
reporter?: Reporter | null;
serverSideRender?: boolean;
log?: Logger;
warn?: Logger;
error?: Logger;
filename?: string;
}
interface ReporterOptions {
state: boolean;
stats: compiler.Stats;
options: Options;
}
type Reporter = (reporterOptions: ReporterOptions) => void;
type Logger = (message: any) => void;
interface WebpackDevMiddleware {
close(callback?: () => void): void;
invalidate(callback?: (stats: compiler.Stats) => void): void;
waitUntilValid(callback?: (stats: compiler.Stats) => void): void;
}
}

View File

@@ -0,0 +1,20 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"webpack-dev-middleware-tests.ts"
]
}

View File

@@ -0,0 +1 @@
{ "extends": "../tslint.json" }

View File

@@ -0,0 +1,33 @@
import * as express from 'express';
import * as webpack from 'webpack';
import * as webpackDevMiddleware from 'webpack-dev-middleware';
const compiler = webpack({});
const webpackDevMiddlewareInstance = webpackDevMiddleware(compiler, {
noInfo: false,
quiet: false,
lazy: true,
watchOptions: {
aggregateTimeout: 300,
poll: true,
},
publicPath: '/assets/',
index: 'index.html',
headers: {
'X-Custom-Header': 'yes'
},
stats: {
colors: true,
},
reporter: null,
serverSideRender: false,
});
const app = express();
app.use(webpackDevMiddlewareInstance);
webpackDevMiddlewareInstance.close();
webpackDevMiddlewareInstance.invalidate();
webpackDevMiddlewareInstance.waitUntilValid(function(){
console.log('Package is in a valid state');
});