博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack配置(第四步:html篇(进阶篇))
阅读量:7076 次
发布时间:2019-06-28

本文共 3477 字,大约阅读时间需要 11 分钟。

webpack.config.js文件

const path = require('path');let htmlwebpackplugin = require('html-webpack-plugin');//引入html-webpack-plugin插件 let export_html= {    entry:  {    	main:__dirname+"/app/js/main.js",//入口文件    	main1:__dirname+"/app/js/main1.js",//入口文件    },    output: {        path: __dirname+"/_build/",        filename: "js/[name].js",//产出文件,name根据entry的入口文件键名定    },    module: {        loaders: [			{			    test: /(\.jsx|\.js)$/,			    loader: 'babel-loader',			    query: {			      presets: ['es2015']			    }			},        ]    }    , 	plugins: [ 		//new一个模板出来,这一个不使用chunks  		new htmlwebpackplugin({	        template: './app/home.html',//入口文件	        filename:  'home1.html',//产出文件		}), 		//new一个模板出来  		new htmlwebpackplugin({	        template: './app/home.html',//入口文件	        filename:  'home2.html',//产出文件	        chunks  : ['main'],//可以设置chunks按需引入JS文件,不设置就会引入所有产出的js	        chunksSortMode: 'manual',//将chunks按引入的顺序排序,不用这个的话,引入到html的JS可能是错乱排序的		}) 	]    };module.exports=export_html;

看plugins这里

//new一个模板出来,这一个不使用chunks                new htmlwebpackplugin({	        template: './app/home.html',	        filename:  'home1.html',// 会生成home1.html		}), 		//new一个模板出来  		new htmlwebpackplugin({	        template: './app/home.html',	        filename:  'home2.html',//会生成home2.html	        chunks  : ['main'],//注意:chunks里面的值是对应entry入口的键名来的	        chunksSortMode: 'manual',		})

app目录下的home.html文件

_build目录下的home1.html文件

_build目录下的home2.html文件

可以看到,home1.html引入了两个js文件,而且main1.js排在main.js前面,

而home2.html,只引入了指定的main.js;

在home2.html的chunks加上:main1

//new一个模板出来  		new htmlwebpackplugin({	        template: './app/home.html',//入口文件	        filename:  'home2.html',//产出文件	        chunks  : ['main',"main1"],//可以设置chunks按需引入JS文件,不设置就会引入所有产出的js	        chunksSortMode: 'manual',//将chunks按引入的顺序排序,不用这个的话,引入到html的JS可能是错乱排序的		})

因为chunks里,main在main1之前,所以引入的文件也是按照这个顺序来的;

顺序的问题主要归功于:这一条属性

chunksSortMode: 'manual',//将chunks按引入的顺序排序,不用这个的话,引入到html的JS可能是错乱排序的

更进一步:

每次都这样new很麻烦,故而写个函数简化过程

let get_html = function(name,chunk){
//封装 return { template: './app/ejs for html/'+ name + '.ejs', filename: name+ '.html', chunks : ['main',chunk||name],//可以设置chunks按需引入JS文件,不设置就会引入所有产出的js chunksSortMode: 'manual',//将chunks按引入的顺序排序 inject : true, hash : true, xhtml : true }};

然后在plugin里面new一个测试一下;

此时,webpack.config.js:

const path = require('path');let htmlwebpackplugin = require('html-webpack-plugin');//引入html-webpack-plugin插件 let get_html = function(name,chunk){
//封装 return { template: './app/'+ name + '.html', filename: name+ '.html', chunks : ['main',chunk||null],//这里引入公共文件main.js,另外一个文件按需引入,当然也可以把这个的值设为数组,传入function的第二个值用数组就行 chunksSortMode: 'manual',//将chunks按引入的顺序排序 inject : true,//所有JavaScript资源插入到body元素的底部 hash : true,//避免缓存 xhtml : true //规范html书写 }};let export_html= { entry: { main:__dirname+"/app/js/main.js",//入口文件 main1:__dirname+"/app/js/main1.js",//入口文件 }, output: { path: __dirname+"/_build/", filename: "js/[name].js",//产出文件,name根据entry的入口文件键名定 }, module: { loaders: [ { test: /(\.jsx|\.js)$/, loader: 'babel-loader', query: { presets: ['es2015'] } }, ] } , plugins: [ //new一个模板出来测试一下   new htmlwebpackplugin(get_html("home","main1")) ] };module.exports=export_html;

结果:

成功!

本文作者:qiangdada
本文发布时间:2018/03/22
本文来自云栖社区合作伙伴 ,了解相关信息可以关注oschina.net网站。

转载地址:http://oecml.baihongyu.com/

你可能感兴趣的文章
“前.NET Core时代”如何实现跨平台代码重用 ——程序集重用
查看>>
Maven入门教程
查看>>
ASP.NET Core 中文文档 第二章 指南(4.5)使用 SQL Server LocalDB
查看>>
用MathType在图片上加公式的方法
查看>>
Xmind 快捷键
查看>>
C#引用C++开发的DLL
查看>>
使用Design包实现QQ动画侧滑效果和滑动菜单导航
查看>>
zabbix_3.0安装部署与中文支持
查看>>
CSS常用操作-导航栏
查看>>
ASP.NET MVC的Action拦截器(过滤器)ActionFilter
查看>>
C++中的STL中map用法详解
查看>>
Ubuntu16.04编译Android6.0/cm13.0教程及相关错误解决办法
查看>>
《你不知道的JavaScript》整理(三)——对象
查看>>
.pdb文件的使用方法
查看>>
Java基础知识笔记(三:文件与数据流)
查看>>
SQL语句教程
查看>>
微信公众号改名后阅读量涨了吗?
查看>>
linux添加用户、用户组、权限
查看>>
MySQL实现定时任务
查看>>
警告 “util.NativeCodeLoader: Unable to load native-hadoop library for your platform”
查看>>