我正在寻找一个简单的Python脚本,该脚本可以在网站部署过程中最小化CSS。(Python是服务器上支持的唯一脚本语言,而像CSS
Utils
这样的功能强大的解析器对该项目来说是多余的)。
基本上,我想要jsmin.py for
CSS。一个没有依赖性的脚本。
有任何想法吗?
对于我来说,进入已经等待了一段时间的python似乎是一项艰巨的任务。我特此介绍我的第一个python脚本:
import sys, re
with open( sys.argv[1] , 'r' ) as f:
css = f.read()
# remove comments - this will break a lot of hacks :-P
css = re.sub( r'\s*/\*\s*\*/', "$$HACK1$$", css ) # preserve IE<6 comment hack
css = re.sub( r'/\*[\s\S]*?\*/', "", css )
css = css.replace( "$$HACK1$$", '/**/' ) # preserve IE<6 comment hack
# url() doesn't need quotes
css = re.sub( r'url\((["\'])([^)]*)\1\)', r'url(\2)', css )
# spaces may be safely collapsed as generated content will collapse them anyway
css = re.sub( r'\s+', ' ', css )
# shorten collapsable colors: #aabbcc to #abc
css = re.sub( r'#([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3(\s|;)', r'#\1\2\3\4', css )
# fragment values can loose zeros
css = re.sub( r':\s*0(\.\d+([cm]m|e[mx]|in|p[ctx]))\s*;', r':\1;', css )
for rule in re.findall( r'([^{]+){([^}]*)}', css ):
# we don't need spaces around operators
selectors = [re.sub( r'(?<=[\[\(>+=])\s+|\s+(?=[=~^$*|>+\]\)])', r'', selector.strip() ) for selector in rule[0].split( ',' )]
# order is important, but we still want to discard repetitions
properties = {}
porder = []
for prop in re.findall( '(.*?):(.*?)(;|$)', rule[1] ):
key = prop[0].strip().lower()
if key not in porder: porder.append( key )
properties[ key ] = prop[1].strip()
# output rule if it contains any declarations
if properties:
print "%s{%s}" % ( ','.join( selectors ), ''.join(['%s:%s;' % (key, properties[key]) for key in porder])[:-1] )
我相信这可以正常工作,并将其输出在最新的Safari,Opera和Firefox上测试正常。除了下划线和/ **
/骇客,它将破坏CSS骇客!如果您遇到大量黑客攻击(或将它们放在单独的文件中),请不要使用Minifier。
我对python的任何提示表示赞赏。不过请温柔,这是我的第一次。:-)
我正在尝试取消缩放/取消合并我的CSS样式。我有一个style.css文件,里面有很多合并的样式,比如: 我试图把它转换成的是: 我如何取消合并缩小的css样式以获得这样的输出?我已经尝试了几个CSS美化器和缩小器,但它们并不完全是我所需要的。 UPD:这里是解决方案:codeBeautifier.com。要获得与上面示例相同的输出,请打开此页面,找到,将其设置为,粘贴您的CSS,然后点击
问题内容: 我通常在Python脚本中使用以下shebang声明: 最近,我遇到了这个shebang声明: 在脚本文档中,已指出使用此表单“更具可移植性”。 这个声明是什么意思?路径中间为什么会有空间?它实际上有助于提高可维护性吗? 问题答案: 之所以具有更高的可移植性,是因为该程序通常可用于在没有完整路径的情况下“激活”所需的命令。 否则,您将必须指定Python解释器的完整路径,该路径可能有所
我正在使用来自Grav(https://getgrav.org/downloads/skeletons)的Saturn站点主题,并希望更改主页的背景图像(以及最终的其他样式)。在主题的自定义CSS()中,我更改了背景图像,但除非同时更新和,否则不会呈现新图像。 我相信两个档案都改是不合适的;系统应该生成一个缩微CSS的新版本。阅读Grav文档(https://learn.getgrav.org/t
问题内容: 我有一个简单的python脚本,我需要启动和停止,我需要使用start.sh和stop.sh脚本来执行此操作。 我有start.sh: 和stop.sh 我主要关注stop.sh脚本。我 认为 这是找到pid的适当方法,但我对此并不敢多说。start.sh成功启动它。当我运行stop.sh时,我无法再通过控制台找到该进程,但输出如下: 因此似乎可以正常工作,并显示“没有这样的过程”的错
While Emmet abbreviations are good for generating HTML, XML or any other structured markup, it may look useless for CSS. You don’t want to write CSS selectors and transform them to CSS selectors, righ
请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 使用 gulp 压缩 JS 访问论坛获取帮助 压缩 css 代码可降低 css 文件大小,提高页面打开速度。 我们接着将规律转换为 gulp 代码 规律 找到 css/ 目录下的所有 css 文件,压缩它们,将压缩后的文件存放在 dist/css/ 目录下。 gulp 代码 你可以 下载所有示例代码 或 在线查看代码 当熟悉 使用 g
当一个python脚本应该从运行时,该文件的正确Sheang是什么? 作为一个示例测试用例,我的系统(OSX)上的默认python没有安装。pyenv虚拟环境可以。我试图从虚拟环境中获取python可执行文件的路径。 所以我做了我的示例: 但是当我尝试运行脚本时,我收到了一个错误: < br >尽管在命令行上运行该路径工作正常: 什么是合适的sheang?理想情况下,我想要一些通用的东西,这样它就