详解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 相关文章推荐
FLASH 广告之外的链接
Dec 16 Javascript
Javascript解决常见浏览器兼容问题的12种方法
Jan 04 Javascript
JavaScript执行效率与性能提升方案
Dec 21 Javascript
浅谈EasyUI中编辑treegrid的方法
Mar 01 Javascript
js判断某个字符出现的次数的简单实例
Jun 03 Javascript
jQuery简单实现彩色云标签效果示例
Aug 01 Javascript
BootStrap Validator使用注意事项(必看篇)
Sep 28 Javascript
微信小程序 loading 详解及实例代码
Nov 09 Javascript
浅谈原生JS中的延迟脚本和异步脚本
Jul 12 Javascript
基于vue2实现上拉加载功能
Nov 28 Javascript
vue实现Input输入框模糊查询方法
Jan 29 Javascript
vue双向绑定数据限制长度的方法
Nov 04 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
thinkphp中memcache的用法实例
2014/11/29 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
经典的带阴影的可拖动的浮动层
2006/06/26 Javascript
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
JS中 用户登录系统的解决办法
2013/04/15 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
详解AngularJS验证、过滤器、指令
2017/01/04 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Django自定义分页与bootstrap分页结合
2021/02/22 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
Django操作session 的方法
2020/03/09 Python
Python多线程多进程实例对比解析
2020/03/12 Python
详解pandas赋值失败问题解决
2020/11/29 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
获奖的大学生创业计划书
2014/01/05 职场文书
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
监守自盗观后感
2015/06/10 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android