详解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 isArray 数组类型检测函数
Oct 08 Javascript
jQuery对象和DOM对象的相互转化实现代码
Mar 02 Javascript
Javascript 面向对象 继承
May 13 Javascript
window resize和scroll事件的基本优化思路
Apr 29 Javascript
node.js中的console.time方法使用说明
Dec 09 Javascript
Js可拖拽放大的层拖动特效实现方法
Feb 25 Javascript
理解javascript闭包
Dec 15 Javascript
AngularJS内建服务$location及其功能详解
Jul 01 Javascript
Vue数据驱动模拟实现5
Jan 13 Javascript
Vue-cli中为单独页面设置背景色的实现方法
Feb 11 Javascript
vue动态渲染svg、添加点击事件的实现
Mar 13 Javascript
如何在 ant 的table中实现图片的渲染操作
Oct 28 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
深入php socket的讲解与实例分析
2013/06/13 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
php上传图片类及用法示例
2016/05/11 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
Extjs 几个方法的讨论
2010/01/28 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
javascript中如何处理引号编码&amp;#034;
2013/08/15 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
详解微信小程序自定义组件的实现及数据交互
2019/07/22 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
python对于requests的封装方法详解
2019/01/03 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
幼儿园庆六一游园活动方案
2014/01/29 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
2015年司法局工作总结
2015/05/22 职场文书
新课程改革心得体会
2016/01/22 职场文书
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB