详解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 相关文章推荐
记录几个javascript有关的小细节
Apr 02 Javascript
prototype 学习笔记整理
Jul 17 Javascript
IE6不能修改NAME问题的解决方法
Sep 03 Javascript
JS获取地址栏参数的几种方法小结
Feb 28 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
May 23 Javascript
js 获取经纬度的实现方法
Jun 20 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
Jun 22 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
Jun 25 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
Nov 22 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
Jan 03 Javascript
vue插槽slot的简单理解与用法实例分析
Mar 14 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
Apr 09 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
js删除所有的cookie的代码
2010/11/25 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
Python中的time模块与datetime模块用法总结
2016/06/30 Python
Python常见字典内建函数用法示例
2018/05/14 Python
Python实现登陆文件验证方法
2018/10/06 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
数组越界问题
2015/10/21 面试题
商场端午节活动方案
2014/01/29 职场文书
消防安全员岗位职责
2014/03/10 职场文书
网络编辑岗位职责
2014/03/18 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
技术经济专业求职信
2014/09/03 职场文书
工地材料员岗位职责
2015/04/11 职场文书
写给老师的保证书
2015/05/09 职场文书
单位提档介绍信
2015/10/22 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS