vue-cli webpack3擴展多模塊打包


場景

在實際的項目開發中會出現這樣的場景,項目中需要多個模塊(單頁或者多頁應用)配合使用的情況,而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)
 9  
10 moduleItems.forEach(item => {
11   entryObj[`${item}`] = `./src/modules/${item}/main.js`
12 })
13  
14 module.exports = entryObj
這里用到了nodejs的fs和path模塊,可以查看文檔http://nodejs.cn/api/fs.html,http://nodejs.cn/api/path.html,可以根據自己的項目配置更改,此處是以src/modules/文件夾下的目錄作為模塊,每個模塊中都有一個main.js作為入口文件
 
修改build/webpack.base.conf.js中entry
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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM