詳解webpack 多入口配置
同事套搭建vue項(xiàng)目,個(gè)人推薦了VUE官網(wǎng)的vue-cil的方式,http://cn.vuejs.org/guide/application.html
順著官網(wǎng)的操作,我們可以本地測(cè)試起我們的項(xiàng)目 npm run dev,首先我們要理解webpack打包主要是針對(duì)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放在一個(gè)views文件夾下面,相關(guān)業(yè)務(wù)應(yīng)用的vue放在一起,對(duì)就是這個(gè)樣子的
我們先簡單的改動(dòng)下我們的配置,來適應(yīng)這個(gè)項(xiàng)目結(jié)構(gòu),再尋找其中的規(guī)律,來完成自動(dòng)配置(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', //實(shí)際文件路徑 inject: true, chunks: ['login'] })
2.規(guī)律出來了,我們只要按照這樣的js和html的對(duì)應(yīng)關(guān)系,就可以通過查找文件,來進(jìn)行同一配置
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不是簡單用的上一個(gè)代碼的index,login而是用的index/index,login/login因?yàn)榭紤]在login目錄下面還有register //文件路徑的\\和/跟操作系統(tǒng)也有關(guān)系,需要注意 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.多入口配置就完成了,當(dāng)然下面其實(shí)還有公共js提取的相關(guān)配置,如果項(xiàng)目里面用到了異步加載,即require.ensure,放在單獨(dú)目錄,進(jìn)行匹配,按照上面的邏輯進(jìn)行推理吧
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js判斷數(shù)組中是否包含某個(gè)值的4種方法總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于js判斷數(shù)組中是否包含某個(gè)值的4種方法,數(shù)組是我們編程中經(jīng)常使用的的數(shù)據(jù)結(jié)構(gòu)之一,在處理數(shù)組時(shí)我們經(jīng)常需要在數(shù)組中查找特定的值,JavaScript 包含一些內(nèi)置方法來檢查數(shù)組是否有特定的值或?qū)ο?需要的朋友可以參考下2023-11-11JavaScript使用ZeroClipboard操作剪切板
這篇文章主要為大家詳細(xì)介紹了JavaScript使用ZeroClipboard操作剪切板的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05ajax級(jí)聯(lián)菜單實(shí)現(xiàn)方法實(shí)例分析
這篇文章主要介紹了ajax級(jí)聯(lián)菜單實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了基于ajax與后臺(tái)php交互實(shí)現(xiàn)級(jí)聯(lián)菜單功能的相關(guān)操作技巧,需要的朋友可以參考下2016-11-11JavaScript 中文轉(zhuǎn)拼音實(shí)現(xiàn)代碼 有些bug
在做項(xiàng)目時(shí)候遇到一個(gè)小小的顯示客戶部門名稱(拼音)的業(yè)務(wù),就是在部門名稱下有相應(yīng)的拼音,而在現(xiàn)有的數(shù)據(jù)庫中沒有相應(yīng)字段,并且部門數(shù)量比較多,添加起來比較費(fèi)時(shí),就想能否在js中實(shí)現(xiàn),在頁面中處理。2010-03-03Javascript實(shí)現(xiàn)一個(gè)簡單的輸入關(guān)鍵字添加標(biāo)簽效果實(shí)例
這篇文章主要給大家介紹了利用Javascript實(shí)現(xiàn)一個(gè)簡單的輸入關(guān)鍵字添加標(biāo)簽效果的相關(guān)資料,類似動(dòng)態(tài)添加標(biāo)簽的效果,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面來一起看看吧。2017-06-06confirm的用法示例用于按鈕操作時(shí)確定是否執(zhí)行
這篇文章主要介紹了confirm的用法,confirm一般用于按鈕操作時(shí)確定是否執(zhí)行,需要的朋友可以參考下2014-06-06用 javascript 實(shí)現(xiàn)的點(diǎn)擊復(fù)制代碼
用 javascript 實(shí)現(xiàn)的點(diǎn)擊復(fù)制代碼,需要的朋友可以參考一下2007-03-03如何實(shí)現(xiàn)小程序tab欄下劃線動(dòng)畫效果
這篇文章主要介紹了如何實(shí)現(xiàn)小程序tab欄下劃線動(dòng)畫效果,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05