zoukankan      html  css  js  c++  java
  • webpack 多页面 打包

    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"
    	}*/
    };

    生成后的文件目录:

     
  • 相关阅读:
    第三个实验代码
    20165104孟凡斌-第五周作业
    20165104孟凡斌-第四周作业
    20165104孟凡斌-第二次java考试课下作业
    20165104孟凡斌-第三周作业
    20165104孟凡斌-第二次JAVA作业
    20165104孟凡斌-第一次Java考试课下作业
    2018-2019-1 《信息安全系统设计基础》 20165235 实验五 通信协议设计
    2018-2019-1 20165235 实验四 外设驱动程序设计
    20165235 实现pwd功能
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/12795743.html
Copyright © 2011-2022 走看看