1、工具代码分析(utils.js)
var path = require('path')
var glob = require('glob')
exports.getEntries = function (globPath, base, replaceed) {
var entries = {}
glob.sync(globPath).forEach(function (entry) {
var moduleName = entry.match(/(\w+).\w+$/)[1];
if(base){
let temp= path.relative(base,entry)
moduleName=temp.replace(path.extname(entry),'')
console.log(moduleName);
}
if(replaceed){
let idx=moduleName.indexOf(replaceed)
if(idx>=0){
let pre= moduleName.substring(0,idx)
let after = moduleName.substring(idx+replaceed.length).replace(/^[\\\/]*/,'')
moduleName=pre+after
}
}
moduleName = moduleName.replace(/\\/g,"\/");
entries[moduleName] = entry
})
return entries;
}
2、webpack配置文件(webpack.config.js)
var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var CleanPlugin = require('clean-webpack-plugin');
var CopyWebpackPlugin = require('copy-webpack-plugin');
var utils = require('./utils.js');
var glob = require('glob')
var ROOT_PATH = path.resolve(__dirname);
var RESOURCES_PATH = path.resolve(ROOT_PATH, 'resources');
var entrys = utils.getEntries(path.join(RESOURCES_PATH, '/static/js/**/*.js'), path.join(RESOURCES_PATH, '/static/js'));
var webpackConfig = {
entry: entrys,
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'static/js/[name].js?v=[chunkhash:7]',
},
module: {
loaders: [
{
test: /\.html$/,
loader: 'html',
query: {
minimize: false
}
}]
},
plugins: [
new CleanPlugin(['dist']),
new CopyWebpackPlugin([{
from: './resources/static/lib',
to: './static/lib'
}
])
]
}
let pages = utils.getEntries(path.join(RESOURCES_PATH, '/templates/**/*.html'), path.join(RESOURCES_PATH,'/templates'));
for (var page in pages) {
let conf = {
filename: 'templates/'+page + '.html',
template: pages[page],
inject: true,
chunkSortMode: 'dependency',
hash: true,
minify: {
removeComments: true,
removeAttributeQuotes: false,
collapseWhitespace: false
},
chunks:Object.keys(entrys).filter(x => {
return x === page
})
}
webpackConfig.plugins.push(new HtmlWebpackPlugin(conf))
}
module.exports = webpackConfig;