webpack 多页面 打包

戏子无情 提交于 2020-04-29 10:06:26

webpack 多页面 打包

一、总结

一句话总结:

webpack可以进行多页面打包编译

 

 

 

二、webpack 多页面 打包

转自或参考:webpack 多页面 打包_JavaScript_jiu_meng的博客-CSDN博客
https://blog.csdn.net/jiu_meng/article/details/79585557

 

 

最近有一个需求,需要把多页面使用webpack进行编译,但是网上进行多页面编译的资料很少,今天把自己配置的webpack多页面打包编译分享给大家

demo地址:https://github.com/mengYu007/webpack3

代码启动:

打开cmd进入文件目录npm install

编译文件:npm run build

启动文件:npm run start

文件目录:

 

 

package.json:注意版本

{
  "name": "webpack3",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "watch": "webpack --watch",
    "build": "webpack",
    "start": "webpack-dev-server --open"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.4",
    "babel-preset-env": "^1.6.1",
    "clean-webpack-plugin": "^0.1.19",
    "css-loader": "^0.28.10",
    "expose-loader": "^0.7.5",
    "extract-text-webpack-plugin": "^3.0.2",
    "file-loader": "^1.1.11",
    "html-webpack-inline-source-plugin": "0.0.10",
    "html-webpack-plugin": "^3.0.6",
    "jquery": "^3.3.1",
    "open-browser-webpack-plugin": "0.0.5",
    "style-loader": "^0.20.3",
    "uglifyjs-webpack-plugin": "^1.2.3",
    "url-loader": "^1.0.1",
    "webpack": "^3.5.5",
    "webpack-dev-server": "^1.14.1"
  }
}

webpack.config.js配置

var path = require('path');
var webpack = require('webpack');
var htmlWebpackPlugin = require('html-webpack-plugin');
var cleanWebpackPlugin = require('clean-webpack-plugin');
var uglifyjsWebpackPlugin = require('uglifyjs-webpack-plugin');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var OpenBrowserPlugin = require('open-browser-webpack-plugin');

module.exports = {
	entry:{ //入口
		app:'./src/app.js',
		/*flexible:'flexible.js',
		zepto:'zepto.min.js'*/
		common:[
			'./src/flexible.js'/*,
			'./src/zepto.min.js'*/
		]
	},
	output:{//出口
		path:path.resolve(__dirname,'build'),
		publicPath: '',//cdn
		filename:'js/[name]._[hash].js'
	},
	devServer:{ //服务
		contentBase:'./build',
		//host:'localhost',
		//hot: true,
		open:true,
		inline:true,
		progress: true,//显示打包速度
		port:8080,
		proxy:{//代理
			"/v2":{//请求v2下的接口都会被代理到 target: http://xxx.xxx.com 中
				target:'https://api.douban.com',
				changeOrigin: true,
				secure: false,// 接受 运行在 https 上的服务
				pathRewrite:{'^/v2':''}


			}
		}
	},
	module:{
		rules:[
			{//css loader
				test:/\.css$/,
				use:ExtractTextPlugin.extract({
					fallback:'style-loader',
					use:['css-loader']
				})
			},
			{//js loader
				test:/\.js$/,
				exclude: /(node_modules|bower_components)/,
				use:{
					loader:'babel-loader'
				}
			},
			{// img 压缩,,生成hash值
				test: /\.(png|svg|jpg|gif)$/,
				use: "file-loader?name=[name][hash].[ext]&publicPath=../img/&outputPath=./img"
				/*name=[name].[ext]文件名,publicPath=../css中路径,outputPath=./img打包后的生成地址*/
			},
			{
				 test: /\.(woff|woff2|eot|ttf|otf)$/,
				 use:['file-loader']
			},
			{ //引用jquery
				 test: require.resolve('jquery'),
		          use: [{
		              loader: 'expose-loader',
		              options: 'jQuery'
		          },{
		              loader: 'expose-loader',
		              options: '$'
		          }]
	        }
		]
	},
	devtool:'inline-source-map',
	plugins:[
		new htmlWebpackPlugin({ //有几个生成new几个html,生成html
			filename:'index.html',
			titile:'apphtml',
			template:'index.html',
			chunks:['app'],//html需要引入的js
			cache:true,//只有在内容变化时才会生成新的html
			minify:{
                removeComments:true, //是否压缩时 去除注释
                collapseWhitespace: false
            }
		}),
		new htmlWebpackPlugin({
			filename:'index2.html',
			titile:'apphtml',
			template:'index2.html',
			chunks:['app'],//html需要引入的js
			cache:true,//只有在内容变化时才会生成新的html
			minify:{
                removeComments:true, //是否压缩时 去除注释
                collapseWhitespace: false
            }
		}),
		new htmlWebpackPlugin({
			filename:'about._[hash].html',
			titile:'apphtml',
			template:'about.html',
			//hash:true,
			chunks:['app'],//html需要引入的js
			cache:true,//只有在内容变化时才会生成新的html
			"head": {
		        "entry": "./build",
		        "css": [ "css/about.css" ]
		     },
			minify:{
                removeComments:true, //是否压缩时 去除注释
                collapseWhitespace: false
            }
		}),
		new cleanWebpackPlugin(['build']),
		/*new webpack.ProvidePlugin({
		    $: "jquery",
		    jQuery: "jquery",
		    "window.jQuery": "jquery"
		}),*/

		new uglifyjsWebpackPlugin(),
		new ExtractTextPlugin({ //提取css
			filename:'css/[name]._[hash].css',
			disable:false,

			allChunks:true
		}),
		new webpack.optimize.CommonsChunkPlugin({ //打包公共js
			//name:['flexible','zepto'],
			name:'common',
			chunks:['./src'],
			minChunks:2,
			minChunks: Infinity
		}),
		new webpack.HashedModuleIdsPlugin(),
		new OpenBrowserPlugin({ url: 'http://localhost:8080' }) //自动打开浏览器
	]
	/*externals:{
		$: "jquery",
		jQuery: "jquery",
		"window.jQuery": "jquery"
	}*/
};

生成后的文件目录:

 

 

 

 

 


 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!