我正在尝试做一个python脚本,它将打包一个目录的内容,并缩小所有的JavaScript和CSS脚本。
如果我使用下面的代码(文章的底部),theme_files
中的目录结构是这样的:
\
|-assets\
| |-css\
| | |-theme.css
| | |-stylesheet.css
| |
| |-js\
| | |-theme.js
| | |-page.js
|
|-index.html
(有没有更好的方法呢?)
它会将整个目录结构正确地输出到生成的.pak
文件中。但是,缩小的css和javascript文件中除了它们自己的文件名之外,没有其他内容。
示例:文件的内容(假定是缩小的) theme.css
将是"theme.css“
就这样。没别的了。一句话。
知道我做错了什么吗?
import io
import os
import zipfile
import rcssmin
import rjsmin
pakName = input("Theme Name: ").replace(" ", "_").lower()
themePak = zipfile.ZipFile(pakName +".tpk", "w")
for dirname, subdirs, files in os.walk("theme_files"):
themePak.write(dirname)
for filename in files:
if not filename.endswith((".css", ".js")):
themePak.write(os.path.join(dirname, filename))
if filename.endswith(".css"):
cssMinified = io.StringIO()
cssMinified.write(rcssmin.cssmin(filename, keep_bang_comments=True))
themePak.writestr(os.path.join(dirname, filename), cssMinified.getvalue())
if filename.endswith(".js"):
jsMinified = io.StringIO()
jsMinified.write(rjsmin.jsmin(filename, keep_bang_comments=True))
themePak.writestr(os.path.join(dirname, filename), jsMinified.getvalue())
themePak.close()
发布于 2018-08-05 07:16:49
如果您需要缩小(或/和合并) JS/CSS文件:我创建了Minifpy:一个使用Python合并和缩小JS和CSS文件的工具。
Minifpy使用一个非常简单的JSON配置文件来定义文件是否必须合并、缩小或不合并:
{
"js": {
"minify_files": [
{"from": "static/file.js", "to":"static/file.min.js"},
],
"merge_files": [
{"from" : ["static/file1.js", "static/file2.js"], "to":"static/public.js", "to_min": "static/public.min.js"}
]
},
"css" : {
"minify_files": [
{"from": "static/file.css", "to":"static/file.min.css"},
],
"merge_files": [
{"from" : ["static/file1.css", "static/file2.css"], "to":"static/public.css", "to_min": "static/public.min.css"}
]
}
}
但是Minifpy不能自动缩小项目中的每个文件。
Minifpy检测JS/CSS文件上的任何修改,并自动合并/缩小它们(对开发很有用)。
https://stackoverflow.com/questions/37635640
复制相似问题