//webpack.config.js const path = require('path'), webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'), ExtractTextPlugin = require("extract-text-webpack-plugin"), CopyWebpackPlugin = require('copy-webpack-plugin'), CleanWebpackPlugin = require('clean-webpack-plugin'); const extractCSS = new ExtractTextPlugin('css/[name]_[contenthash:8].css'); var distPath = path.join(__dirname,'dist'), srcPath = path.join(__dirname,'src'); module.exports = { //入口文件 entry: { common : srcPath + "/pages/common/common.js", index : srcPath + "/pages/index/index.js", ui : srcPath + "/pages/ui/ui.js" }, //输出目录 output: { publicPath: '/ptah-ui/dist/', path: distPath, filename: 'js/[name]_[chunkhash:8].js' }, module: { rules: [ { test: /\.css$/, loader: extractCSS.extract([ 'css-loader']) }, { test: /\.less/, loader: extractCSS.extract([ 'css-loader','less-loader']) }, { test: /.art$/, use: [ 'art-template-loader' ] }, { test: /\.(png|jpg|gif)$/, loader : 'file-loader?name=images/[name]_[hash:8].[ext]' }, { test: /\.(htm|html)$/i, loader: 'html-withimg-loader' } ] }, plugins: [ new CleanWebpackPlugin(['dist']), extractCSS, new CopyWebpackPlugin([{ from : srcPath +'/lib', to : distPath + '/lib' }]), new HtmlWebpackPlugin({ template: srcPath + '/pages/index/index.html', chunks: ['index','common'], filename: 'pages/index.html' }), new HtmlWebpackPlugin({ template: srcPath + '/pages/ui/ui.html', chunks: ['ui','common'], filename: 'pages/ui.html' }) ] }
前提条件:已安装nodejscss
//入口文件 entry: { common : srcPath + "/pages/common/common.js", index : srcPath + "/pages/index/index.js", ui : srcPath + "/pages/ui/ui.js" }, //输出目录 output: { publicPath: '/ptah-ui/dist/', path: distPath, filename: 'js/[name]_[chunkhash:8].js' },
注意hash与chunkhash的区别。这样打包后的文件就自动带入了md5文件签名了,能够解决缓存和增量更新的问题。html
因为是多页面,头部导航是公共的,想经过include签入进去。node
html-webpack-plugin
html-withimg-loader
extract-text-webpack-plugin
copy-webpack-plugin
(思路:单独创建一个common.js,里面引入公共文件,做为chuck) webpack