详解webpack 多入口配置

 更新时间:2017年06月16日 14:14:25   作者:游云  
本篇文章主要介绍了webpack 多入口配置 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

同事套搭建vue项目,个人推荐了VUE官网的vue-cil的方式,http://cn.vuejs.org/guide/application.html

顺着官网的操作,我们可以本地测试起我们的项目 npm run dev,首先我们要理解webpack打包主要是针对js,查看下面生成的配置,首页是index.html,模版用的index.html,入口文件用的mian.js

//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放在一起,对就是这个样子的

我们先简单的改动下我们的配置,来适应这个项目结构,再寻找其中的规律,来完成自动配置(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,放在单独目录,进行匹配,按照上面的逻辑进行推理吧

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 防止页面被iframe(兼容IE,Firefox火狐)

    防止页面被iframe(兼容IE,Firefox火狐)

    以前发布的防止被iframe的代码,容易在火狐浏览器下, 不断的刷新页面。所以从网站找到了这篇文章。
    2010-07-07
  • Javascript日期时间函数的使用方法举例

    Javascript日期时间函数的使用方法举例

    在JavaScript中日期时间函数是一组用于操作和处理日期和时间的函数,这些函数可以用于获取当前日期和时间、格式化日期和时间、计算日期和时间的差异、转换日期和时间的格式等,这篇文章主要给大家介绍了关于Javascript日期时间函数的使用方法,需要的朋友可以参考下
    2024-02-02
  • javascript if 的简化代码

    javascript if 的简化代码

    a=0 if(a<1)alert(a),alert(1-a) VS if(a==0){alert(a);alert(1-a)}
    2008-02-02
  • Javascript 链式作用域详细介绍

    Javascript 链式作用域详细介绍

    这篇文章主要介绍了Javascript 链式作用域详细介绍的相关资料,需要的朋友可以参考下
    2017-02-02
  • 详解JS: reduce方法实现 webpack多文件入口

    详解JS: reduce方法实现 webpack多文件入口

    本篇文章主要介绍了详解JS: reduce方法实现 webpack多文件入口,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 解决typescript 提示 Object is possibly'null'的N种方案

    解决typescript 提示 Object is possibly'null'的N种方案

    这篇文章主要介绍了typescript 提示 Object is possibly ‘null‘ 的N种解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 微信小程序批量上传图片到七牛(推荐)

    微信小程序批量上传图片到七牛(推荐)

    这篇文章主要介绍了微信小程序批量上传图片到七牛,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • JavaScript引入方式深入解读

    JavaScript引入方式深入解读

    这篇文章主要介绍了JavaScript引入方式案例,结合实例形式分析了JavaScript引入方式特性与相关操作技巧,需要的朋友可以参考下
    2022-07-07
  • 详解JS函数重载

    详解JS函数重载

    本文主要介绍了利用JavaScript中的特殊对象arguments来模拟函数重载的解决方案,非常的实用,给需要的小伙伴参考下
    2014-12-12
  • node.js使用nodemailer发送邮件实例

    node.js使用nodemailer发送邮件实例

    这篇文章主要介绍了node.js使用nodemailer发送邮件的方法,例子中使用的是QQ邮箱,你也可以修改成其它的邮箱如163、gmail等,需要的朋友可以参考下
    2014-03-03

最新评论