详解webpack 多入口配置


Posted in Javascript onJune 16, 2017

同事套搭建vue项目,个人推荐了VUE官网的vue-cil的方式,http://cn.vuejs.org/guide/application.html

顺着官网的操作,我们可以本地测试起我们的项目 npm run dev,首先我们要理解webpack打包主要是针对js,查看下面生成的配置,首页是index.html,模版用的index.html,入口文件用的mian.js

详解webpack 多入口配置

//file build/webpack.base.conf.js
//entry 配置

module.exports = {
 entry: {
  app: './src/main.js'
 },
 //....

//file build/webpack.dev.conf.js
//html配置
  new HtmlWebpackPlugin({
   filename: 'index.html',
   template: 'index.html',
   inject: true
  })

1.上面的目录没办法满足我们多入口的要求,我们希望的是html放在一个views文件夹下面,相关业务应用的vue放在一起,对就是这个样子的

详解webpack 多入口配置

我们先简单的改动下我们的配置,来适应这个项目结构,再寻找其中的规律,来完成自动配置(index.html)

//file build/webpack.base.conf.js
//entry 配置

module.exports = {
 entry: {
  'index': './src/view/index/index.js',
  'login': './src/view/login/login.js',
 },
 //....

//file build/webpack.dev.conf.js
//html配置,index我们保留了根目录访问路径
  new HtmlWebpackPlugin({
   filename: 'index.html',
   template: './src/view/index/index.html',
   inject: true,
   chunks: ['index']
  }),
  new HtmlWebpackPlugin({
   filename: 'login/login.html', //http访问路径
   template: './src/view/login/login.html', //实际文件路径
   inject: true,
   chunks: ['login']
  })

2.规律出来了,我们只要按照这样的js和html的对应关系,就可以通过查找文件,来进行同一配置

var glob = require('glob')
function getEntry(globPath, pathDir) {
  var files = glob.sync(globPath);
  var entries = {},
    entry, dirname, basename, pathname, extname;

  for (var i = 0; i < files.length; i++) {
    entry = files[i];
    dirname = path.dirname(entry);
    extname = path.extname(entry);
    basename = path.basename(entry, extname);
    pathname = path.join(dirname, basename);
    pathname = pathDir ? pathname.replace(pathDir, '') : pathname;
    console.log(2, pathname, entry);
    entries[pathname] = './' + entry;
  }
  return entries;
}
//我们的key不是简单用的上一个代码的index,login而是用的index/index,login/login因为考虑在login目录下面还有register
//文件路径的\\和/跟操作系统也有关系,需要注意
var htmls = getEntry('./src/view/**/*.html', 'src\\view\\');
var entries = {};
var HtmlPlugin = [];
for (var key in htmls) {
  entries[key] = htmls[key].replace('.html', '.js')
  HtmlPlugin.push(new HtmlWebpackPlugin({
   filename: (key == 'index\\index' ? 'index.html' : key + '.html'), 
   template: htmls[key],
   inject: true,
    chunks: [key]
  }))
}

3.多入口配置就完成了,当然下面其实还有公共js提取的相关配置,如果项目里面用到了异步加载,即require.ensure,放在单独目录,进行匹配,按照上面的逻辑进行推理吧

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
Mar 31 Javascript
让你的博客飘雪花超出屏幕依然看得见
Jan 04 Javascript
Javascript中克隆一个数组的实现代码
Dec 06 Javascript
JQuery教学之性能优化
May 14 Javascript
jQuery表格排序组件-tablesorter使用示例
May 26 Javascript
node.js中的fs.lstat方法使用说明
Dec 16 Javascript
基于jquery实现图片放大功能
May 07 Javascript
深入理解JavaScript内置函数
Jun 03 Javascript
Vue.js快速入门实例教程
Oct 15 Javascript
基于javascript实现按圆形排列DIV元素(二)
Dec 02 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
Aug 17 jQuery
vue.js vue-router如何实现无效路由(404)的友好提示
Dec 20 Javascript
requirejs + vue 项目搭建详解
Jun 16 #Javascript
jQuery 控制文本框自动缩小字体填充
Jun 16 #jQuery
jQuery序列化后的表单值转换成Json
Jun 16 #jQuery
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
Jun 16 #Javascript
基于AngularJS实现的工资计算器实例
Jun 16 #Javascript
Angular+Node生成随机数的方法
Jun 16 #Javascript
JS利用正则表达式实现简单的密码强弱判断实例
Jun 16 #Javascript
You might like
PHP在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
python使用urllib2模块获取gravatar头像实例
2013/12/18 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
亚马逊印度站:Amazon.in
2017/10/15 全球购物
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
成人大专生实习期的自我评价
2013/10/02 职场文书
财务会计毕业生自荐信
2013/11/02 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
2014高中生入党思想汇报范文
2014/09/13 职场文书
离婚案件上诉状
2015/05/23 职场文书
合理缓解职场压力,让你随时保持最佳状态!
2019/06/21 职场文书
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers