Open einsitang opened 9 years ago
项目目录下未 exclude
& useOptimizer: true
的资源都会做压缩,不是从一个 html 扫描需要哪些文件。
你想想,如果从一个 html 扫描出某些文件的话,如果文件路径是个变量怎么办?
比如
<img src="<?=$img_src?>" />
但是他在压缩的时候却无法定义哪些压缩哪些不压缩?有一些是前端工具的js或者是一个项目的库(重复)也进行压缩了
所以,fis 提供了把无意义的资源 exclude
的方法,参见 https://github.com/fex-team/fis/wiki/%E9%85%8D%E7%BD%AEAPI#projectexclude 和 https://github.com/fex-team/fis/wiki/%E9%85%8D%E7%BD%AEAPI#roadmappath
@xiangshouding 我的项目使用bower引入库,但每一个库的项目结构的命名格式不一样,能否直接选择需要压缩的资源而不是排除的资源呢?
暂时不能
谢谢 @xiangshouding 能否将这个需求加入这个项目的改进清单呢,类似的需求应该不少吧?
另外我觉得,既然fis能强悍到修改html文档里面的资源引用,他应该优先扫描文档的引用节点,然后再根据这些引用匹配规则再进行编译,因为既然修改了文档,那么肯定也要做文档的解析,解析完毕后再对这部分使用的资源匹配fis的配置再进行查找文件和编译,不会比扫描整个目录效率要差吧。
另外你提及到的,资源是变量的时候怎么办
<img src="<?=$img_src?>" />
像这类的写法本来就不适合应用到所有前端工具,也不需要前端工具去合并,比如
$assets_server = 'http://xxx'
$js_lib = $assets_server.'/assets/'
<script src="<?$js_lib?>/lib1.js"></script>
<script src="<?$js_lib?>/lib2.js"></script>
如果前端工具按照目录压缩和合并的话,这里也不会修改,还是得人手工修改里面的数据
<script src="<?$js_lib?>/lib_all.js"></script>
我执行fis release -op 的时候,它不会根据html文档中引入的js内容进行压缩,而是扫描整个目录下的js进行压缩吗?因为它扫描到我的一些node_modules下的工具js,导致出错。