学习笔记一

const srcRoot = path.resolve(__dirname,'src')
这种写法就是获得src的绝对路径
const pageDir = path.resolve(srcRoot,'page')
获得page文件夹的绝对路径,resolve至关于在第一个路径执行一个cd命令
 
entry多入口格式
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)
}
相关文章
相关标签/搜索