微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

详解webpack 多入口配置

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

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

rush: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)

rush:js;"> //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的对应关系,就可以通过查找文件,来进行同一配置

rush:js;"> 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,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],chunks: [key]
}))
}

3.多入口配置就完成了,当然下面其实还有公共js提取的相关配置,如果项目里面用到了异步加载,即require.ensure,放在单独目录,进行匹配,按照上面的逻辑进行推理吧

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型:
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树、反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 {1,2,4,7,3,5,6,8} 和中序遍历序列 {
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须了解的知识点,现在迎来了ES6+的时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,所以刚好总结一下JavaScript中this指向的问题。
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高