@molejs/mole-tools
Version:
Configuration and scripts for Mole App.
95 lines (91 loc) • 3.15 kB
JavaScript
var fs = require('fs');
var webpack = require('webpack')
// var LodashModuleReplacementPlugin = require('lodash-webpack-plugin');
// var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
var path = require('path');
var merge = require('webpack-merge');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin');
var UglifyJsParallelPlugin = require('webpack-uglify-parallel');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var os = require('os');
var config = require('./config');
var utils = require('./utils')
var baseWebpackConfig = require('./base.conf');
//入口文件配置
var entry = utils.getEntryAliasList();
var vendorKey = 'lib/base';
entry[vendorKey] = ['upaas'];
//entryAliasList[] = ['prod'];
var mergeConf = merge(baseWebpackConfig, {
//页面入口文件配置
entry:entry,
module: {
rules: [{
test:/\.less$/,
//loaders: ['happypack/loader?id=HappyPack'],
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: [{
loader:'css-loader',
},
{
loader:'postcss-loader',
},
'less-loader'
],
}),
},{
test:/\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: ['css-loader'],
publicPath:'./'
}),
}]
},
resolve: {
alias:merge(config.alias, {
'prod': utils.resolve('../src/framework/prod'),
})
},
plugins: [
new UglifyJsParallelPlugin({
workers: os.cpus().length, // usually having as many workers as cpu cores gives good results
compress: {
warnings: false,
drop_debugger: true,
drop_console: true,
},
sourceMap: false
}),
new webpack.optimize.CommonsChunkPlugin({
name:vendorKey, //输出公共库文件名
}),
]
});
module.exports = mergeConf;
var pages = utils.getMultiEntry('./src/modules/**/*.html');
for (var pathname in pages) {
var jsChunk = pathname.replace('.html', '.js') ;
// 配置生成的html文件,定义路径等
var conf = {
filename: pathname + '.html',
template: pages[pathname], // 模板路径
hash:false,
minify:{
removeComments: true,//清除HTML注释
collapseWhitespace: true,//压缩HTML
collapseBooleanAttributes: true,//省略布尔属性的值 <input checked="true"/> ==> <input />
removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />
removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"
minifyJS: true,//压缩页面JS
minifyCSS: true//压缩页面CSS
},
chunks: [jsChunk, vendorKey], // 每个html引用的js模块
inject: true // js插入位置
};
// 需要生成几个html文件,就配置几个HtmlWebpackPlugin对象
module.exports.plugins.unshift(new HtmlWebpackPlugin(conf));
}