详解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 相关文章推荐
jQueryUI如何自定义组件实现代码
Nov 14 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
Jul 10 Javascript
JS实现具备延时功能的滑动门菜单效果
Sep 17 Javascript
深入理解jquery自定义动画animate()
May 24 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
Jul 25 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
Oct 27 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
Jan 16 Javascript
vue实现底部菜单功能
Jul 24 Javascript
webpack-mvc 传统多页面组件化开发详解
May 07 Javascript
jQuery实现高级检索功能
May 28 jQuery
详解Vue 换肤方案验证
Aug 28 Javascript
JavaScript异步操作中串行和并行
Nov 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
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
jQuery JSON的解析方式分享
2011/04/05 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
js实现微信聊天效果
2020/08/09 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
python实现rsa加密实例详解
2017/07/19 Python
python实现简单http服务器功能
2018/09/17 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
大学生个人求职口试自我评价
2014/02/16 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
2015年组织部工作总结
2015/04/03 职场文书
借款民事起诉状范文
2015/05/19 职场文书
接收函
2019/04/22 职场文书
用Python爬虫破解滑动验证码的案例解析
2021/05/06 Python
python使用glob检索文件的操作
2021/05/20 Python
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS
macos系统如何实现微信双开? mac登录两个微信以上微信的技巧
2022/07/23 数码科技