vue-cli webpack3擴展多模塊打包
阿新 • • 發佈:2018-04-09
class ack style 配置 應用 默認 clas keys module
場景
在實際的項目開發中會出現這樣的場景,項目中需要多個模塊(單頁或者多頁應用)配合使用的情況,而vue-cli默認只提供了單入口打包,所以就想到對vue-cli進行擴展
實現
首先得知道webpack是提供了多入口打包,那就可以從這裏開始改造
新建build/entry.js
1 const path = require(‘path‘) 2 const fs = require(‘fs‘) 3 4 const moduleDir = path.resolve(__dirname, ‘../src/modules‘) 5 6 let entryObj = {} 7 8 let moduleItems = fs.readdirSync(moduleDir)這裏用到了nodejs的fs和path模塊,可以查看文檔http://nodejs.cn/api/fs.html,http://nodejs.cn/api/path.html,可以根據自己的項目配置更改,此處是以src/modules/文件夾下的目錄作為模塊,每個模塊中都有一個main.js作為入口文件 修改build/webpack.base.conf.js中entry9 10 moduleItems.forEach(item => { 11 entryObj[`${item}`] = `./src/modules/${item}/main.js` 12 }) 13 14 module.exports = entryObj
const entryObj = require(‘./entry‘) module.exports= { entry: entryObj }
下來就是如何將打包好的文件註入到html中,這裏利用html-webpack-plugin插件來解決這個問題,首先你需要有一個html的模板文件,然後在webpack配置中更改默認的html-webpack-plugin插件配置
添加build/plugins.js
const HtmlWebpackPlugin = require(‘html-webpack-plugin‘) let configPlugins = [] Object.keys(entryObj).forEach(item => { configPlugins.push(new HtmlWebpackPlugin( { filename: ‘../dist/‘ + item + ‘.html‘, template: path.resolve(__dirname, ‘../index.html‘), chunks: [item] } )) }) module.exports = configPlugins
修改build/webpack.dev.conf.js配置
module.exports = {
plugins: configPlugins
}
實戰
vue移動web通用腳手架
github地址: https://github.com/GavinZhuLei/vue-mobile
vue-cli webpack3擴展多模塊打包