L'opzione migliore che ho visto finora è WebAssets.
Dalla documentazione: webassets è una libreria generale, la dipendenza indipendente per la gestione il patrimonio della tua applicazione web. Può unire e comprimere i file CSS e JavaScript, supportando un'ampia varietà di filtri diversi, e supporta l'utilizzo di compilatori come CoffeeScript o Sass.
Si può usare in modalità standalone con tornado (si veda la specific documentation).
Set up è facile e abbastanza semplice:
from webassets import Environment
static_directory = "../static"
output_directory = "/static"
my_env = Environment(static_directory, output_directory)
Naturalmente è possibile personalizzare gran lunga migliore. Il resto è abbastanza ben spiegato nella documentazione.
Caratteristiche principali:
- facile integrazione
- possibile comprimere file statici in anticipo (strumento da riga di comando)
- possibile comprimere file statici al volo
- supporta la maggior parte Minimizzando/librerie di compressione (JS, CSS)
- Supporta la compilazione di LESS/SASS all'interno del browser
- supporta la compressione dei modelli di JS all'interno del browser (manubri ...)
- Supporta CSS sprite mapper
Esempio di ciò che un modello (qui, Jinja2) si presenta come dopo una corretta configurazione:
# css
{% assets filters="cssmin", output="css/compiled-layout.css",
"css/custom.css",
"css/bootstrap-datepicker.css",
"css/typeahead.css" %}
<link rel="stylesheet" type="text/css" href="{{ ASSET_URL }}">
{% endassets %}
# js
{% assets filters="jsmin", output="js/lib/compiled-libs.js",
"js/lib/jquery-2.1.1.min.js",
"js/lib/jquery-ui.min.js",
"js/lib/bootstrap.min.js",
"js/lib/bootstrap-datepicker.js",
"js/lib/d3.min.js",
"js/lib/typeahead.bundle.min.js",
"js/lib/moment.min.js",
"js/lib/handlebars-v2.0.0.js",
"js/global.js" %}
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}
Ho usato WebAssets legato a Flask per un anno senza problemi ed è perfettamente affidabile, oltre che ben mantenuto: è lì da diversi anni, e last commit to date was yesterday.
Grazie mille! È stato un po 'complicato da configurare a causa della mancanza della documentazione, ma funziona. – alecxe