/** * Created by jackyanjiaqi on 16/7/8. */ import * as file from "./file"; import PATH = require("path"); import * as CONFIG from "./config"; var __themeDatas: ITheme[]; var __themePaths: string[] = []; export interface ITheme { skins?: { [host: string]: string }; exmls?: Array; autoGenerateExmlsList?: boolean; } export function read():ITheme[]{ //1.找到项目内后缀名为'.thm.json'的主题文件并返回列表 var themes = searchTheme(); if (themes.length == 0) { console.error("error","*.thm.json not found!"); return; } __themePaths = []; //2.将主题文件读入内存变成json对象 __themeDatas = themes.map(themePath => { __themePaths.push(themePath); //支持增量编译,取出已经编译好的配置代替 if(CONFIG.isIncrementalCompile && CONFIG.isOutDirSet){ //检查是否已经有输出的配置文件 let relativePath:string = PATH.relative(CONFIG.getReleaseDir(),themePath); let outThemePath:string = PATH.resolve(CONFIG.getOutDir(),relativePath); if(file.exists(outThemePath)){ try { var data = JSON.parse(file.read(outThemePath)); return data || {}; } catch (e) { return {}; } } } try { var data = JSON.parse(file.read(themePath)); return data || {}; } catch (e) { return {}; } }); return __themeDatas; } export function save(outDir?:string){ __themePaths.forEach((path,index)=>{ let content:string = JSON.stringify(__themeDatas[index],null,4); if(outDir){ let relativePath:string = PATH.relative(CONFIG.getReleaseDir(),path); path = PATH.resolve(outDir,relativePath); let dirpath = PATH.dirname(path); if(!file.exists(dirpath)){ file.mkDir(dirpath); } console.log("saving as '-out' demond:",path); } file.save(path,content); }) } function searchTheme(): string[] { var files = file.searchByFunction(CONFIG.getReleaseDir(), themeFilter); console.log(files); return files; } function themeFilter(f: string) { return f.indexOf('.thm.json') > 0; }