6

Webassets は GAE 上で js/css をオンザフライで圧縮することはできないため、デプロイ時に圧縮するのが最善の方法のようです。

多くのグーグル検索の後、これを達成するために以下のスクリプトを思いつきました。

base.html最初は、javascript パスをそのままにして、単純に css/js を圧縮するのが最善だと思いました。

cssmin は css を圧縮し、オリジナルを上書きします。ただし、クロージャはオリジナルを上書きすることを許可しておらず、この概念はすでに失敗しています。

2 つ目の問題は、クロージャーが元のファイルを上書きしても、キャッシュが問題になることです。このため、縮小された css/js の各展開では、ファイル名に乱数を含めて、新しい展開後に新しいバージョンが実際に取得されるようにする必要があります。私が思いついたコンセプトでは、これは不可能です。

したがって、これを達成する唯一の方法はbase.htmlwithsedまたは何かを変更することです。

車輪を再発明する前に、これを行うためのより良いアプローチはありますか? どうもありがとう

import sys, os
import cssmin

def main():
    if len(sys.argv) == 1:
        return

    appId = sys.argv[1]
    print "appId", appId

    cmd = r'java -jar compiler.jar --js=/src/application/static/f11/f11.js --js_output_file=/src/application/static/f11/f11.min.js'
    os.system(cmd)

    output = cssmin.cssmin(open('/src/application/static/f11/f11.css').read())
    f = open('/src/application/static/f11/f11.css','w')
    f.write(output)    

    # Perform appcfg.py to update GAE server
    cmd = r'"\google_appengine\appcfg.py"'
    os.system(cmd + " update . " + " -A %s"%appId)


if __name__ == "__main__":
    main()
4

1 に答える 1