/** * Created by jackyanjiaqi on 16/12/16. */ import * as file from "./file"; import PATH = require("path"); import * as CONFIG from "./config"; var __crcSyncConfig:IExmlsCRC = null; export interface IExmlsCRC { lasttime?:string, exmls?: { [path:string]: string }, __savePath?:string } function initFromProject():IExmlsCRC{ let crcSyncFilePath = PATH.resolve(CONFIG.getProjectDir(),".exmlCrcSync"); let crcSyncConfig:IExmlsCRC = {exmls:{}}; if(file.exists(crcSyncFilePath)){ crcSyncConfig = JSON.parse(file.read(crcSyncFilePath)); } crcSyncConfig.__savePath = crcSyncFilePath; return crcSyncConfig; } export function save(){ if(__crcSyncConfig){ __crcSyncConfig.lasttime = new Date().toLocaleDateString(); let savePath = __crcSyncConfig.__savePath; delete __crcSyncConfig.__savePath; file.save(savePath,JSON.stringify(__crcSyncConfig,null,4)); } } export function crcSyncFilter(item:any){ //step1.读取crcSync文件 if(!__crcSyncConfig){ __crcSyncConfig = initFromProject(); } //step2.根据crc32值过滤掉不需要编译的文件 let path; let content; if(typeof item === "string"){ path = item; content = file.read(PATH.resolve(CONFIG.getProjectDir(),path)); }else{ path = item.path; content = item.content?item.content:file.read(PATH.resolve(CONFIG.getProjectDir(),path)); } let crc32 = require("../import/crc32.js"); let marker = crc32(content,null); if(path in __crcSyncConfig.exmls){ if(marker != __crcSyncConfig.exmls[path]){ //存储到crc同步配置中 __crcSyncConfig.exmls[path] = marker; return true; }else{ return false; } }else{ __crcSyncConfig.exmls[path] = marker; return true; } }