UNPKG

cocos-builder

Version:

cocos2d-js download builder package tools

113 lines (99 loc) 3.11 kB
const fs = require('fs'); const path = require('path'); const cmd = require("commander"); /** * 检查输入版本是否支持 * @returns {boolean} */ exports.version = function(){ if(!fs.existsSync(path.join(__dirname, "version", cmd.version))){ console.log(" Version is not exists."); return false; } return true; }; /** * 检查module.json里面的文件是否都存在 * @returns {boolean} */ exports.module2engine = function(){ var info = require("./version/" + cmd.version + "/info"); var module = info.module; var result = true; for(var p in module){ module[p].forEach(function(item){ //过滤非js文件 if(!/\.js/.test(item)){ return; } var dir = path.join(cmd.dir, item); if(!fs.existsSync(dir)){ console.log(" missing: " + item); result = false; } }); } return result; }; /** * 反向检查引擎文件夹内的文件是否都存在于module.json * @returns {boolean} */ exports.engine2module = function(){ var info = require("./version/" + cmd.version + "/info"); var module = info.module; var dir = cmd.dir; //递归搜索js文件 function findList(dirName){ var file = []; var dir = fs.readdirSync(dirName); //过滤.开头的文件以及文件夹 dir = dir.filter(function(item){ return !/^\./.test(item); }); dir.forEach(function(item){ var p = path.join(dirName, item); var s = fs.statSync(p); if(s.isDirectory()){ file = file.concat(findList(p)); }else{ file.push(p); } }); return file; } var dirList = findList(path.join(dir, "cocos2d")); dirList = dirList.concat(findList(path.join(dir, "extensions"))); dirList = dirList.concat(findList(path.join(dir, "external"))); //添加几个例外文件进入列表 dirList.push(path.join(dir, "Base64Images.js")); dirList.push(path.join(dir, "CCBoot.js")); dirList.push(path.join(dir, "CCDebugger.js")); //补全文件路径 var engineList = dirList.map(function(item){ return item.replace(dir+path.sep, '').replace(/\\/g, '/'); }); //检查文件是否全部被引用(是否遗漏文件) engineList.forEach(function(item){ for(var p in module){ var ml = module[p]; for(var i=0; i<ml.length; i++){ if(ml[i] == item){ return; } } } console.log(" " + item); }); return true; }; /** * 生成文件后,反向检查文件是否完整 */ exports.generate = function(){ var dist = fs.readdirSync(path.join(cmd.dir, cmd.name, "dist")); var src = fs.readdirSync(path.join(cmd.dir, cmd.name, "src")); console.log(" The number of dist file: " + dist.length); console.log(" The number of src file: " + src.length); }; //todo: 文件语法检查