easyify
Version:
A compilation tools & workflow for FE, built with webpack4.x, compile faster and smart, make work easier.
61 lines (60 loc) • 2.08 kB
JavaScript
const path = require("path");
const fs = require("fs");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const HtmlWebpackIncludeAssetsPlugin = require('html-webpack-include-assets-plugin');
const {
project,
env
} = require('./project');
const config = require('../config/index');
let reg = /\.\S+$/;
let pagesPath = {}; // 存储都页面的路径对象
let pagesDir = path.resolve(__dirname, '../../src/' + project + '/pages'); //项目多页面的pages目录
let projectSrcDir = path.resolve(__dirname, '../../src/' + project); //项目多页面的pages目录
let projectDistDir = '';
let VUE = config.vue;
let minify = undefined;
// console.log(config);
if (env === 'prod') {
minify = {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true,
chunksSortMode: 'dependency'
};
projectDistDir = path.resolve(__dirname, '../../dist/' + project) + '/'; //项目多页面的pages目录
}
fs.readdirSync(pagesDir)
.filter(filename => !reg.test(filename))
.map(filename => {
const jsReg = /\.js$/;
const pagePath = fs
.readdirSync(pagesDir + '/' + filename)
.filter(filename => jsReg.test(filename));
pagePath.map(name => {
pagesPath[filename + "/" + name.replace(".js", "")] =
pagesDir + "/" + filename + "/" + name;
});
});
// 生成entry
const extraEntry = pagesPath;
// // 生成HtmlWebpackPlugin
let extraHtmlWebpackPlugins = [];
for (let i in pagesPath) {
extraHtmlWebpackPlugins.push(
new HtmlWebpackPlugin({
filename: projectDistDir + i + ".html",
template: VUE ? (pagesDir + '/' + i + ".html") : (pagesDir + '/' + i + ".html"),
chunks: [i],
minify: env === 'prod' ? minify : {}
}),
new HtmlWebpackIncludeAssetsPlugin({
assets: env === 'prod' ? ['vendor.dll.js'] : ['static/js/vendor.dll.js'],
append: false
})
);
}
module.exports = {
extraEntry,
extraHtmlWebpackPlugins
}