Zhang Guangda * @description 重建文件目录 * */ date_default_timezone_set('Asia/Shanghai'); error_reporting(E_ALL ^ E_NOTICE); require('JSMin.php'); // 如果不是开发环境,禁止重建目录 if ($_SERVER["HTTP_HOST"] && substr($_SERVER["HTTP_HOST"], 0, 3) != "dev") { echo "Invalid Environment!"; exit; } //当前路径 define('ROOT_DIR' , dirname(__FILE__) . '/..'); //src路径 define('SRC_DIR' , ROOT_DIR . '/src'); //存放压缩文件的文件夹名称 define('COMPRESS_DIR_NAME', ROOT_DIR . '/release'); //换行符 define('LINE', "\n"); /** * 写入重建目录的代码 * @param string $module 模块名称 * @param string $path 路径 */ function rebuildDir($module, $path) { $files = array(); $main_str = file_get_contents(COMPRESS_DIR_NAME."/main-debug.js"); // 更新css // $css_version = getSvnRevision(ROOT_DIR."/../css"); // if ($css_version) $main_str = preg_replace("/we\.STATIC_VERSION\s*=\s*\d+/i", "we.STATIC_VERSION = ".$css_version, $main_str); if( $handle = opendir($path) ) { while( false !== ( $fileName = readdir($handle) ) ) { if(strpos($fileName, '.js')) { // 将所有文件名拼到一个数组内 $name = substr($fileName, 0, strlen($fileName) - 3); array_push($files, '"'.strtolower($module)."/".$name.'"'."\n"); } } closedir($handle); } if ($files) { // 替换main_str内的标记为我们需要的代码 $str = implode(",", $files); $main_str = replaceMark('WE_'.strtoupper($module).'_DEFINE', $str, $main_str); return file_put_contents(COMPRESS_DIR_NAME."/main-debug.js", $main_str); } } /** * 更换标识位置 * @param String $mark 标识 * @param String $str 要被替换的字符 * @param String $main_str Main-debug的字符串 * @return String Main-debug被替换完成之后的字符串 */ function replaceMark($mark, $str, $main_str) { $def_mark_str_start = '/** '.$mark.'# **/'; // 标记的开始 $def_mark_str_end = '/** #'.$mark.' **/'; // 标记的结束 // 标记内代码的起始位置 $start = strpos($main_str, $def_mark_str_start) + strlen($def_mark_str_start); // 标记内代码的结束位置 $end = strpos($main_str, $def_mark_str_end); // 将 main_str 的代码替换掉 $main_str = substr($main_str, 0, $start) . $str . substr($main_str, $end); return $main_str; } /** * 获取svn revision * @param string $path 路径 * @return integer 版本号 */ // function getSvnRevision($path) { // ob_start(); // system("svn info ".$path); // $svn_info = ob_get_clean(); // preg_match("/Last Changed Rev: (\d+)/", $svn_info, $match); // if ($match && $match[1]) { // return intval($match[1]); // } else { // return 0; // } // } $bCore = rebuildDir("core", SRC_DIR."/core"); $bInterface = rebuildDir("interface", SRC_DIR."/interface"); $done = $bCore && $bInterface; if ($_SERVER["HTTP_HOST"]) { ?>