【发布时间】:2013-10-09 17:13:53
【问题描述】:
我有大量的 CSS 文件要处理,有人刚刚对许多子网站上的各种核心样式表进行了更改,因此有些抱怨。显然,如果最初的开发者有一些远见,他们只会包含一个主样式表并覆盖必要的元素......
我最初从comm 开始,认为它可能会成功,但很快发现它需要接收排序的输入文件。
然后我切换到diff 并通过阅读和research 得到以下内容:
diff --unchanged-group-format="@@ %dn,%df%c'\012'%<" --old-group-format='' --new-group-format='' --changed-group-format='' file_1.css file_2.css
前面的明明差不多了,但是:
A) 我需要找出@@ 行(应该没问题,对吗?乍一看这似乎是正确的,但diff 是否会添加任何其他需要的意外行被猛拉?)然后
B)我需要再创建两个文件,首先是 file_1.css 中剩余的唯一行,然后是 file_2.css 中剩余的唯一行。
显然,第一个“共同”文件将进入包含文件夹,然后作为 @import url("common.css"); 包含到后面创建的两个文件中
我认为以下简单的更改将创建我所指的后两个文件:
diff --unchanged-group-format='' --old-group-format="@@ %dn,%df%c'\012'%<" --new-group-format='' --changed-group-format='' file_1.css file_2.css
diff --unchanged-group-format='' --old-group-format='' --new-group-format="@@ %dn,%df%c'\012'%<" file_1.css file_2.css
示例文件:
例如,在执行以下测试时:
diff --unchanged-group-format="@@ %dn,%df%c'\012'%<" --old-group-format='' --new-group-format='' --changed-group-format='' file_1.css file_2.css | egrep -v "^@@\d*" > common.css
diff --unchanged-group-format='' --old-group-format="@@ %dn,%df%c'\012'%<" --new-group-format='' --changed-group-format='' file_1.css file_2.css | egrep -v "^@@\d*" > old.css
然后用egrep "^body" *css 搜索body,它只在common.css 中产生了一个主体,而在old.css 中没有一个主体,而它表明在file_1.css 和file_2.css 中有两个不同的条目。所以很明显这种方法是有缺陷的。
如何创建这两个最终成为通用包含和覆盖文件的文件?
【问题讨论】:
-
您能否提供输入文件的示例和您的预期输出。
-
@anubhava 你去吧。
-
可能帮不上什么忙,但您或许可以先合并这些文件,然后使用zamez.org/factorcss 之类的东西?
-
有趣的@stephenhay,但是系统不断在 gist 原始链接上抛出错误。奇怪的是它应该以 css 结尾,但肯定会导致对结果缺乏信任。
-
哦,真不幸。希望你能找到解决办法。