entry: { pageOne: './src/pageOne/index.js', pageTwo: './src/pageTwo/index.js', pageThree: './src/pageThree/index.js' }
fs.readdirSync(path) 同步獲得路徑javascript
fs.statSync(path) 同步獲得路徑的文件格式信息html
stat.isDirectory() 判斷是否爲文件夾java
fs.existsSync(path) 判斷路徑是否存在webpack
const mainFile= 'index.js'
function getEntry(){ let entryMap = {} fs.readdirSync(pageDir).forEach((pathname)=>{ let fullPathName = path.resolve(pageDir,pathname) let stat = fs.statSync(fullPathName) let fileName = path.resolve(fullPathName,mainFile) if(stat.isDirectory()&&fs.existsSync(fileName)){ entryMap[pathname] = fileName } }) return entryMap }
const entryMap = getEntry(); module.exports = { entry :entryMap, }
該方法把page文件夾下每一個路徑進行遍歷,若是這個路徑是個文件夾而且文件夾裏有index.js文件,則把文件夾名字做爲key,文件夾絕對路徑做爲value返回一個對象,web
webpack多入口寫法爲對象形式,名字+路徑,數組
webpack對html文件的處理格式ui
const HtmlWebpackPlugin = require('html-webpack-plugin') module.exports = { plugins: [new HtmlWebpackPlugin()] }
多入口時的html文件處理插件
新建一個數組,遍歷設置入口配置時產生的對象,入口配置時產生的對象格式爲 { page下的文件夾名: 文件夾下index.js的絕對路徑 }htm
找到page下文件夾中與文件夾名相同的.html文件,若是路徑存在,在數組中加入new HtmlWebpackPlugin() , 並配置插件使生成的html文件名字爲不一樣文件夾名,路徑對應入口文件絕對路徑對象
function getHtmlArray(entryMap){ let htmlArray = [] Object.keys(entryMap).forEach(key=>{ let fullPathName = path.resolve(pageDir,key) let fileName = path.resolve(fullPathName,key+'.html') if(fs.existsSync(fileName)){ htmlArray.push(new HtmlWebpackPlugin({ filename:key+'.html', template:fileName, chunks:[key] })) } }) return htmlArray } const htmlArray = getHtmlArray(entryMap) module.exports = { plugins:[].concat(htmlArray) }