bm_scaffold_async_router_test1
Version:
本木前端脚手架-异步路由版-测试专用
41 lines (40 loc) • 1.48 kB
JavaScript
// 测试反馈有很小几率在脚手架打包时无法为Html文件中写入打包后的带版本号的
// main_xxxx.js\vendor_xxxx.js
// 此插件用于在打包后检测是否写入了带版本号的文件
// 如果写入失败则再次尝试写入
const path = require('path');
const fs = require('fs');
function versionCheck(){
let paths = path.join(process.cwd(), 'dist/js/');
let fileNames = [];
// 读取打包后生成的js文件名
let files = fs.readdirSync(paths);
files.forEach(file =>{
if(/main_.+/.test(file) || /vendor_.+/.test(file)){
fileNames.push(file);
}
})
let csspaths = path.join(process.cwd(), 'dist/css/');
// 读取打包后生成的css文件名
let cssFiles = fs.readdirSync(csspaths);
cssFiles.forEach(file =>{
if(/main_.+/.test(file)){
fileNames.push(file);
}
})
console.log(fileNames, 'fileNames');
let htmlFile = path.join(process.cwd(), 'dist/html/index.html');
let htmlStr = '';
let data = fs.readFileSync(htmlFile, 'UTF-8');
if(data.indexOf(fileNames[0]) < 0){
htmlStr = data.replace('main.js', fileNames[0]);
}
if(htmlStr.indexOf(fileNames[1]) < 0){
htmlStr = htmlStr.replace('vendor.js', fileNames[1]);
}
if(htmlStr.indexOf(fileNames[2]) < 0){
htmlStr = htmlStr.replace('main.css', fileNames[2]);
}
fs.writeFileSync(htmlFile, htmlStr);
}
module.exports = versionCheck;