Dal webassets won't work on GAE per comprimere un js/css al volo, sembra che l'approccio migliore sia farlo al momento dell'implementazione.Come ridurre e versione js/css su Google App Engine?
Dopo un sacco di googling ho trovato la sceneggiatura qui sotto per raggiungere questo obiettivo.
All'inizio pensavo che il migliore sarebbe stato lasciare il percorso javascript in base.html
così com'è e semplicemente comprimere il css/js.
cssmin comprime il css e sovrascrive l'originale. Tuttavia la chiusura non consente di sovrascrivere l'originale e questo concetto ha già esito negativo.
Il secondo problema è, anche se ho ottenuto la chiusura sovrascrivendo il file originale, il caching sarà un problema. Per questo motivo, ogni distribuzione di css/js minificati dovrebbe avere un numero casuale nel nome del file, in modo che le nuove versioni vengano effettivamente rilevate dopo una nuova distribuzione. Con il concetto che ho ideato, questo non sarà possibile però.
Quindi l'unico modo per ottenere questo sarebbe modificare base.html
con sed
o qualcosa del genere.
Prima di reinventare la ruota, c'è un approccio migliore per farlo? Molte grazie
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()
C'è un motivo specifico per non comprimere css/js con strumenti da riga di comando e quindi avere un piccolo script bash per gestire la procedura di distribuzione? Il mio script di distribuzione consiste sia nel minificare il css/js che uso sia nell'eseguire il comando 'appcfg'. – dlebech
In fase di sviluppo sono necessari gli asset non compressi e per la produzione sono necessari compressi. Modifica manualmente il percorso delle risorse da .js a .min.js manualmente? E come gestisci il controllo delle versioni? – Houman
Ho [condiviso i miei script di implementazione/sviluppo qui] (https://gist.github.com/dlebech/5846132). Nel mio html, faccio sempre riferimento ai file .min.js e poi ho uno script per lo sviluppo (run_debug.sh) e uno per la distribuzione (deploy.sh). Entrambi usano lo script compile.sh che si trova nella mia cartella statica. O copia semplicemente lo sviluppo css/js nel file .min o esegue la minificazione effettiva. Non so se questo sia utile, ma almeno è come lo faccio funzionare :-) – dlebech