详解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 相关文章推荐
jQuery学习2 选择器的使用说明
Feb 07 Javascript
UpdatePanel和Jquery冲突的解决方法
Apr 01 Javascript
自己动手手写jQuery插件总结
Jan 20 Javascript
jQuery选择器源码解读(三):tokenize方法
Mar 31 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
Jun 17 Javascript
AngularJS 路由详解和简单实例
Jul 28 Javascript
JavaScript中函数声明与函数表达式的区别详解
Aug 18 Javascript
js实现可输入可选择的select下拉框
Dec 21 Javascript
vue移动端屏幕适配详解
Apr 30 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
Oct 26 Javascript
通过微信公众平台获取公众号文章的方法示例
Dec 25 Javascript
Vue+axios封装请求实现前后端分离
Oct 23 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目录操作函数之获取目录与文件的类型
2010/12/29 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
python中的yield使用方法
2014/02/11 Python
Python自动化测试工具Splinter简介和使用实例
2014/05/13 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
学生党员的自我评价范文
2014/03/01 职场文书
安全生产活动月方案
2014/03/09 职场文书
年终晚会主持词
2014/03/25 职场文书
维修工先进事迹
2014/05/29 职场文书
班级出游活动计划书
2014/08/15 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers
Python matplotlib绘制雷达图
2022/04/13 Python
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android
Django框架中表单的用法
2022/06/10 Python