12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- var path = require('path');
- var config = require('../config')
- var webpack = require('webpack')
- var merge = require('webpack-merge')
- var utils = require('./utils')
- var baseWebpackConfig = require('./webpack.base.conf')
- var HtmlWebpackPlugin = require('html-webpack-plugin')
- var glob = require('glob')
- // add hot-reload related code to entry chunks
- Object.keys(baseWebpackConfig.entry).forEach(function (name) {
- baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
- })
- module.exports = merge(baseWebpackConfig, {
- module: {
- loaders: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
- },
- // eval-source-map is faster for development
- devtool: '#eval-source-map',
- plugins: [
- new webpack.DefinePlugin({
- 'process.env': config.dev.env
- }),
- // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
- new webpack.optimize.OccurenceOrderPlugin(),
- new webpack.HotModuleReplacementPlugin(),
- new webpack.NoErrorsPlugin()
- ]
- })
-
- function getEntry(globPath) {
- var entries = {},
- basename, tmp, pathname;
- if (typeof (globPath) != "object") {
- globPath = [globPath]
- }
- globPath.forEach((itemPath) => {
- glob.sync(itemPath).forEach(function (entry) {
- basename = path.basename(entry, path.extname(entry));
- if (entry.split('/').length > 4) {
- tmp = entry.split('/').splice(-3);
- pathname = tmp.splice(0, 1) + '/' + basename; // 正确输出js和html的路径
- entries[pathname] = entry;
- } else {
- entries[basename] = entry;
- }
- });
- });
- return entries;
- }
-
- var pages = getEntry(['./src/module/*.html','./src/module/**/*.html']);
-
- for (var pathname in pages) {
- // 配置生成的html文件,定义路径等
- var conf = {
- filename: pathname + '.html',
- template: pages[pathname], // 模板路径
- inject: true, // js插入位置
- // necessary to consistently work with multiple chunks via CommonsChunkPlugin
- chunksSortMode: 'dependency'
-
- };
-
- if (pathname in module.exports.entry) {
- conf.chunks = ['manifest', 'vendor', pathname];
- conf.hash = true;
- }
-
- module.exports.plugins.push(new HtmlWebpackPlugin(conf));
- }
|