今天 用 Web/PHPStorm ES6 语法支持以及实时编译 解决了编译问题,那么,我的文件都被编译到根目录的dist 里面了, 可我要是在二级目录下开发,那我的文件还有手动移动到指定的位置吗?
当然不行啊, 原本打算用node去写一个这样的功能,其他队友都有node 环境,也能轻松用起来,
但是….node 毕竟不太熟啊,查函数查了好久好麻烦…索性就用php来做吧!
思路:
先获取目录下所有的文件,如果文件有改动,立刻移动到另一个目录,
我使用了php的 scandir
函数来获取当前目录下所有的文件,然后使用 md5_file
函数获取文件的md5数值,如果此值变了,说明文件有改动,
首先定义一个数组,用来存储所有的文件及MD5值,
然后循环判断,如果文件有改动,md5值变了,就把此文件移动到目录目录,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/** * Created by PhpStorm. * User: iyahe@qq.com (天明) * Date: 2017/4/26 * Time: 10:33 */ define('sleep',1000); //延迟时间(毫秒) define('fileLen',2); //文件名称长度 define('baginPath','/dist/ideal/src'); //开始目录 define('endPath','/ideal/dist/'); //复制到的目录 date_default_timezone_set('PRC'); echo "PHP开始监控文件变化 by 天明°...".PHP_EOL; $fileArr = array(); do { $path = __DIR__.baginPath; $dir = __DIR__.endPath; $file = scandir($path); foreach($file as $k=>$v){ if(strlen($v) > fileLen){ $filePathTemp = $path.'/'.$v; $md5File = md5_file($filePathTemp); if(@$fileArr[$v] != $md5File){ microtime(sleep);//延迟 copy($filePathTemp,$dir.$v); if(isset($fileArr[$v])){ echo date('Y-m-d H:i:s',time()).' >> '.$dir.$v.' ---> '.$filePathTemp.PHP_EOL; } $fileArr[$v] = $md5File; } } } } while (true); |
最后结果如下,当我修改文件, 编辑器的wacth 会自动把文件转码到 dist 目录,目录里面的文件改动了,md5值变化,触发复制!
PHP开始监控文件变化 by 天明°…
2017-04-26 13:28:50 >> C:\www\front-end-lib/ideal/dist/index.js.map —> C:\www\front-end-lib/dist/ideal/src/index.js.map
2017-04-26 13:28:50 >> C:\www\front-end-lib/ideal/dist/index.js —> C:\www\front-end-lib/dist/ideal/src/index.js
2017-04-26 13:28:50 >> C:\www\front-end-lib/ideal/dist/index.js.map —> C:\www\front-end-lib/dist/ideal/src/index.js.map