104 lines
3.4 KiB
JavaScript
104 lines
3.4 KiB
JavaScript
|
/*
|
|||
|
* @Author: xuyangt
|
|||
|
* @Description:
|
|||
|
* @Date: 2024-01-09 13:47:34
|
|||
|
* @LastEditTime: 2024-04-19 17:08:48
|
|||
|
*/
|
|||
|
const fs = require('fs');
|
|||
|
const XLSX = require('xlsx');
|
|||
|
const path = require('path');
|
|||
|
|
|||
|
function readColumnFromExcel(excelPath, sheetName, columnName) {
|
|||
|
// 读取Excel文件
|
|||
|
const workbook = XLSX.readFile(excelPath);
|
|||
|
// 获取指定的sheet
|
|||
|
const worksheet = workbook.Sheets[sheetName];
|
|||
|
// 将sheet转换为JSON对象数组
|
|||
|
const jsonData = XLSX.utils.sheet_to_json(worksheet, {header:1});
|
|||
|
// 获取列名在第一行的索引
|
|||
|
const columnIndex = jsonData[0].indexOf(columnName);
|
|||
|
// 读取指定列的数据
|
|||
|
const columnData = jsonData.map(row => row[columnIndex]);
|
|||
|
// 移除列名
|
|||
|
columnData.shift();
|
|||
|
return columnData;
|
|||
|
}
|
|||
|
//在指定目录下创建文件夹
|
|||
|
function createDir(dirPath) {
|
|||
|
if (!fs.existsSync(dirPath)) {
|
|||
|
fs.mkdirSync(dirPath);
|
|||
|
}
|
|||
|
}
|
|||
|
//在指定目录下创建JSON文件
|
|||
|
function createJsonFile(dirPath,fileName,data){
|
|||
|
fs.writeFileSync(path.join(dirPath,fileName),JSON.stringify(data,null,2));
|
|||
|
}
|
|||
|
//往指定目录下的JSON文件中添加数据
|
|||
|
function addJsonFile(dirPath,fileName,data){
|
|||
|
let filePath = path.join(dirPath,fileName);
|
|||
|
let fileData = fs.readFileSync(filePath);
|
|||
|
let jsonData = JSON.parse(fileData);
|
|||
|
jsonData = Object.assign(jsonData,data);
|
|||
|
fs.writeFileSync(filePath,JSON.stringify(jsonData,null,2));
|
|||
|
}
|
|||
|
function genModelConfig(excelPath) {
|
|||
|
const sheetName = 'SM_APPPAGE';
|
|||
|
const columnName = 'PAGEURL';
|
|||
|
const columnData = readColumnFromExcel(excelPath, sheetName, columnName);
|
|||
|
//过滤columnData中不以'/nccloud/resources‘开头或者不以'../../../../'开头的数据
|
|||
|
const filterData = columnData.filter(item => {
|
|||
|
return item.startsWith('/nccloud/resources') || item.startsWith('../../../../');
|
|||
|
});
|
|||
|
const modelConfig = {};
|
|||
|
filterData.forEach(item=>{
|
|||
|
let model = '',entryPath = '',target="";
|
|||
|
if(item.indexOf('/nccloud/resources')>-1){
|
|||
|
target='/nccloud/resources/';
|
|||
|
}else if(item.indexOf('../../../../')>-1){
|
|||
|
target='../../../../';
|
|||
|
}
|
|||
|
if(target){
|
|||
|
try{
|
|||
|
model = item.split(target)[1]?.split('/')[0];
|
|||
|
if(item.includes('.html')){
|
|||
|
entryPath ='./src/'+ item.split(target)[1]?.split(".html")[0]+'.js';
|
|||
|
}else if(item.includes('.js')){
|
|||
|
entryPath ='./src/'+ item.split(target)[1];
|
|||
|
}
|
|||
|
|
|||
|
if(model){
|
|||
|
if( modelConfig[model]){
|
|||
|
if(modelConfig[model].buildEntryPath.indexOf(entryPath)===-1){
|
|||
|
modelConfig[model].buildEntryPath.push(entryPath);
|
|||
|
}
|
|||
|
}else{
|
|||
|
modelConfig[model] = {
|
|||
|
buildEntryPath:[entryPath]
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}catch(e){
|
|||
|
console.error("item",item);
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
//判断dist文件夹是否存在,不存在则创建
|
|||
|
createDir(path.resolve(process.cwd(), './dist'));
|
|||
|
|
|||
|
//判断dist/modelConfig文件夹是否存在,不存在则创建
|
|||
|
createDir(path.resolve(process.cwd(), './dist/modelConfig'));
|
|||
|
//遍历modelConfig对象,往dist/modelConfig文件夹下的json文件中添加数据
|
|||
|
for(let key in modelConfig){
|
|||
|
let data = modelConfig[key];
|
|||
|
createDir(path.resolve(process.cwd(), `./dist/modelConfig/${key}`));
|
|||
|
if(fs.existsSync(path.resolve(process.cwd(), `./dist/modelConfig/${key}/config.json`))){
|
|||
|
addJsonFile(path.resolve(process.cwd(), `./dist/modelConfig/${key}`),`config.json`,data);
|
|||
|
}else{
|
|||
|
createJsonFile(path.resolve(process.cwd(), `./dist/modelConfig/${key}`),`config.json`,data);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
genModelConfig(process.argv[2]);
|