UNPKG

@molejs/mole-tools

Version:

Configuration and scripts for Mole App.

95 lines (91 loc) 3.15 kB
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)); }