首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >缩小目录中的所有CSS和Javascript

缩小目录中的所有CSS和Javascript
EN

Stack Overflow用户
提问于 2016-06-05 06:28:38
回答 1查看 2.3K关注 0票数 0

我正在尝试做一个python脚本,它将打包一个目录的内容,并缩小所有的JavaScript和CSS脚本。

如果我使用下面的代码(文章的底部),theme_files中的目录结构是这样的:

代码语言:javascript
复制
\
 |-assets\
 |        |-css\
 |        |     |-theme.css
 |        |     |-stylesheet.css
 |        |
 |        |-js\
 |        |    |-theme.js
 |        |    |-page.js
 |
 |-index.html

(有没有更好的方法呢?)

它会将整个目录结构正确地输出到生成的.pak文件中。但是,缩小的css和javascript文件中除了它们自己的文件名之外,没有其他内容。

示例:文件的内容(假定是缩小的) theme.css将是"theme.css“

就这样。没别的了。一句话。

知道我做错了什么吗?

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2018-08-05 07:16:49

如果您需要缩小(或/和合并) JS/CSS文件:我创建了Minifpy:一个使用Python合并和缩小JS和CSS文件的工具。

Minifpy使用一个非常简单的JSON配置文件来定义文件是否必须合并、缩小或不合并:

代码语言:javascript
复制
{
    "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文件上的任何修改,并自动合并/缩小它们(对开发很有用)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37635640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档