UPDATE: Se si utilizza la versione 0.1.0 ember-cli
o più recente, questo hack non è probabilmente necessario. ember-cli
ora symlinks files invece di copiare. È maggio ottenere un miglioramento delle prestazioni su Windows o dischi lenti.
Broccoli (usato da ember-cli
) memorizza il suo stato temporaneo nel file system, quindi è molto file di I/O dipendenti. Prova a ridurre il numero di file nelle directory public/
, vendor/
e bower_components/
. Tutti i file all'interno di queste cartelle verranno copiati almeno una volta per ciclo di ricostruzione. Le dimensioni e il numero di file nelle cartelle influiscono notevolmente sulle prestazioni.
In sostanza, ogni volta che si modifica un file, broccoli copia i file tra le numerose directory all'interno di <ember app>/tmp/
. Nel caso della tua dir bower_components/
, sembra che copi ogni singolo file più di una volta. Deve farlo perché potresti usare app.import('some.js')
nel tuo Brocfile.js
, potresti anche @import "some.scss"
in file SASS/LESS. Non c'è modo di sapere quali file sono effettivamente necessari, quindi li copia tutti.
Se si rimuovono i file che si non hai bisogno di da bower_components/
e vendor/
, si noterà meglio il tempo di compilazione.
un mondo reale esempio
Se si installa la pergola dipendenze highcharts.com#3.0.5
, si ottiene anche un dono speciale di 2829 file (198MB) nel vostro bower_components/
dir. Immagina le letture e le copie del file system non necessarie che stanno accadendo lì.
Ecco un frammento della mia struttura dir puliti:
$ find bower_components -type f | grep highcharts
bower_components/highcharts.com/js/highcharts-more.src.js
bower_components/highcharts.com/js/highcharts.src.js
Si noti che solo i file .js
rimangono, ho tolto tutto il resto. Sono 2827 file rimossi. Highcharts è un esempio estremo, ma la maggior parte delle tue dipendenze ha 5 volte il numero di file di cui hai effettivamente bisogno.
futuro positivo avanti
Il team ember-cli
sono al lavoro migliorando le prestazioni dell'ecosistema broccoli sottostante. Il lavoro has already begun e alcune app del mondo reale (con alberi di grandi dimensioni) vedono miglioramenti delle prestazioni riducendo il tempo di ricostruzione da 4 secondi a 600 ms. Utilizzando symlinks instead of copying sta mostrando miglioramenti drastici.
Per quelli di noi che hanno applicazioni su larga scala, un sacco di dipendenze Bower e molti membri del team che piangono, che hanno bisogno di una soluzione ora:
Una soluzione temporanea
Un modo per mantenere il vostro bower_components/
clean, serve per controllare le dipendenze nel controllo di versione. Questo consente di utilizzare git clean
per potare la directory con facilità:
bower install —-save d3
git add -—force bower_components/d3/d3.js # force, because bower_components/ is gitignored
git commit -m "Added d3.js"
// Brocfile.js
app.import('bower_components/d3/d3.js');
Ogni volta che fate un bower install
è probabile ottenere tutte le cruft più indietro nella vostra dir. git clean
facilmente rimuove non Versione file controllati:
git clean -f -d -x bower_components/
ember serve
Dopo aver fatto questo, ci sono voluti un unico ricostruzione (il tempo di costruire, dopo la modifica di un file) da 20 secondi fino a 3,5 secondi (abbiamo una abbastanza grande app).
Se andate su questa strada, non dimenticare le dipendenze Bower necessari Ember:
bower_components/ember/ember.js
bower_components/ember/ember.prod.js
bower_components/ember-cli-shims/app-shims.js
bower_components/ember-cli-test-loader/test-loader.js
bower_components/ember-data/ember-data.js
bower_components/ember-data/ember-data.prod.js
bower_components/ember-load-initializers/ember-load-initializers.js
bower_components/ember-resolver/dist/modules/ember-resolver.js
bower_components/jquery/dist/jquery.js
bower_components/loader/loader.js
bower_components/handlebars/handlebars.js
bower_components/handlebars/handlebars.runtime.js
Ecco il comando git per voi:
bower install
git add -f bower_components/ember/ember.js bower_components/ember/ember.prod.js bower_components/ember-cli-shims/app-shims.js bower_components/ember-cli-test-loader/test-loader.js bower_components/ember-data/ember-data.js bower_components/ember-data/ember-data.prod.js bower_components/ember-load-initializers/ember-load-initializers.js bower_components/ember-resolver/dist/modules/ember-resolver.js bower_components/jquery/dist/jquery.js bower_components/loader/loader.js bower_components/handlebars/handlebars.js bower_components/handlebars/handlebars.runtime.js
git commit -m "Added ember-cli dependencies"
git clean -f -d -x bower_components/
Sei per caso in esecuzione Windows? Ho avuto un problema in cui le build richiedevano fino a 20 secondi per il completamento e il mio progetto è minuscolo. Si è scoperto che era il mio Virus Scanner che interferiva con la build. Dai un'occhiata a [questo thread] (https://github.com/broccolijs/broccoli/issues/39) su Github per maggiori informazioni. – sonikarc
@sonikarc nope, mac. Ty for link –