UNPKG

3.15 kBJavaScriptView Raw
1var fs = require('fs');
2var webpack = require('webpack')
3// var LodashModuleReplacementPlugin = require('lodash-webpack-plugin');
4// var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
5var path = require('path');
6var merge = require('webpack-merge');
7var ExtractTextPlugin = require("extract-text-webpack-plugin");
8
9var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin');
10var UglifyJsParallelPlugin = require('webpack-uglify-parallel');
11var HtmlWebpackPlugin = require('html-webpack-plugin');
12
13var os = require('os');
14var config = require('./config');
15var utils = require('./utils')
16var baseWebpackConfig = require('./base.conf');
17
18//入口文件配置
19var entry = utils.getEntryAliasList();
20var vendorKey = 'lib/base';
21entry[vendorKey] = ['upaas'];
22//entryAliasList[] = ['prod'];
23var mergeConf = merge(baseWebpackConfig, {
24 //页面入口文件配置
25 entry:entry,
26 module: {
27 rules: [{
28 test:/\.less$/,
29 //loaders: ['happypack/loader?id=HappyPack'],
30 use: ExtractTextPlugin.extract({
31 fallback: "style-loader",
32 use: [{
33 loader:'css-loader',
34 },
35 {
36 loader:'postcss-loader',
37 },
38 'less-loader'
39 ],
40 }),
41 },{
42 test:/\.css$/,
43 use: ExtractTextPlugin.extract({
44 fallback: "style-loader",
45 use: ['css-loader'],
46 publicPath:'./'
47 }),
48 }]
49 },
50 resolve: {
51 alias:merge(config.alias, {
52 'prod': utils.resolve('../src/framework/prod'),
53 })
54 },
55 plugins: [
56 new UglifyJsParallelPlugin({
57 workers: os.cpus().length, // usually having as many workers as cpu cores gives good results
58 compress: {
59 warnings: false,
60 drop_debugger: true,
61 drop_console: true,
62 },
63 sourceMap: false
64 }),
65 new webpack.optimize.CommonsChunkPlugin({
66 name:vendorKey, //输出公共库文件名
67 }),
68 ]
69});
70module.exports = mergeConf;
71var pages = utils.getMultiEntry('./src/modules/**/*.html');
72for (var pathname in pages) {
73 var jsChunk = pathname.replace('.html', '.js') ;
74 // 配置生成的html文件,定义路径等
75 var conf = {
76 filename: pathname + '.html',
77 template: pages[pathname], // 模板路径
78 hash:false,
79 minify:{
80 removeComments: true,//清除HTML注释
81 collapseWhitespace: true,//压缩HTML
82 collapseBooleanAttributes: true,//省略布尔属性的值 <input checked="true"/> ==> <input />
83 removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />
84 removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"
85 removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"
86 minifyJS: true,//压缩页面JS
87 minifyCSS: true//压缩页面CSS
88 },
89 chunks: [jsChunk, vendorKey], // 每个html引用的js模块
90 inject: true // js插入位置
91 };
92 // 需要生成几个html文件,就配置几个HtmlWebpackPlugin对象
93 module.exports.plugins.unshift(new HtmlWebpackPlugin(conf));
94}