背景使用composer安装私有gitlab仓库类库会自动生成.git目录,会导致类库不能直接进入git仓库。每次想手动删除目录,都想用composer的scripts功能自动删除。参考函数scandir列出指定路径下的文件和目录,要求PHP版本大于5.0unlink删除文件rmdir删除目录,要求目录为空,实现遍历该目录下所有类库的思想vendor目录,并过滤掉名为.git的目录删除.git目录下的所有文件,递归删除所有子目录删除.git目录注意:scandir有两个特殊目录。示例代码namespaceClothing\Tools;classClearFile{publicfunctionscanDir($rootPath,$scan){$dirList=[];foreach(scandir($rootPath)as$dir){if($dir=='.'||$dir=='..'){继续;}$path=realpath($rootPath.DIRECTORY_SEPARATOR.$dir);如果($dir===$scan||$scan===false){$dirList[]=$path;}elseif(is_dir($path)){$dirList=array_merge($dirList,$this->scanDir($path.DIRECTORY_SEPARATOR,$scan));}}返回$dirList;}publicfunctionclearDir($dir){if(!is_dir($dir)){returnfalse;$list=$this->scanDir($dir,false);foreach($listas$file){if(is_file($file)){取消链接($file);}elseif(is_dir($file)){$this->clearDir($file);}}返回rm目录($目录);}}bin/clear-git$clear=new\Clothing\Tools\ClearFile();$dirList=$clear->scanDir($rootPath,'.git');composer.json"scripts":{"post-autoload-dump":["./vendor/bin/clear-git"]}
