总结
当我们把所有东西放在一起时,我们完整的webpack.config.js
文件看起来像这样:
'use strict';
const path = require("path");
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const basePlugins = [
new webpack.optimize.CommonsChunkPlugin('vendor', '[name].[hash].bundle.js'),
new HtmlWebpackPlugin({
template: './src/index.html',
inject: 'body',
minify: false
})
];
const envPlugins = {
production: [
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
}
})
],
development: []
};
const plugins = basePlugins.concat(envPlugins[process.env.NODE_ENV] || []);
module.exports = {
entry: {
app: './src/index.ts',
vendor: [
'@angular/core',
'@angular/compiler',
'@angular/common',
'@angular/http',
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
'@angular/router',
'es6-shim',
'redux',
'redux-thunk',
'redux-logger',
'reflect-metadata',
'ng2-redux',
'zone.js',
]
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].[hash].js',
publicPath: "/",
sourceMapFilename: '[name].[hash].js.map'
},
devtool: 'source-map',
resolve: {
extensions: ['.webpack.js', '.web.js', '.ts', '.js']
},
plugins: plugins,
module: {
rules: [
{ test: /\.ts$/, loader: 'tslint' },
{ test: /\.ts$/, loader: 'ts', exclude: /node_modules/ },
{ test: /\.html$/, loader: 'raw' },
{ test: /\.css$/, loader: 'style!css?sourceMap' },
{ test: /\.svg/, loader: 'url' },
{ test: /\.eot/, loader: 'url' },
{ test: /\.woff/, loader: 'url' },
{ test: /\.woff2/, loader: 'url' },
{ test: /\.ttf/, loader: 'url' },
],
noParse: [ /zone\.js\/dist\/.+/, /angular2\/bundles\/.+/ ]
}
}
更进一步
Webpack也做类似热部署和代码优化,我们没有覆盖。有关更多信息,您可以查看官方文档。源代码也可以在Github上获得。