2015-02-12 10 views
7

Ho problemi con Laravel Elixir e sto lavorando sull'ordine in cui vengono eseguite le operazioni. Mi è stato permesso di credere che concatenare chiamate di elisir li costringesse a eseguire in modo sincrono, ma ho avuto problemi in cui in determinate circostanze alcuni comandi non sembrano essere eseguiti o sembrano essere eseguiti in un ordine che significa che non vengono completati correttamente .Esecuzione asincrona dei comandi di elisir di Laravel

Il mio primo problema era che il file non è mai stato dependencies.js essere di versione dalla funzione version() fino a quando ho scambiato le due funzioni scripts() round, quindi quello per dependencies.js corse secondo.

Un altro problema è che quando eseguo le attività tramite la funzione gulp, la maggior parte delle volte, i font con caratteri fantastici vengono copiati nella directory di build. Tuttavia, quando si esegue gulp watch spesso vengono omessi.

Sono in grado di aggirare entrambi questi problemi, ma continuo a vedere piccole cose come questa che mi fanno pensare che non capisco perfettamente l'ordine di esecuzione e le sottigliezze che lo circondano. Qualcuno sa se mi manca qualcosa di ovvio?

Grazie.

Ecco il mio codice gulpfile.js:

mix.sass("app.scss", 'public/css/', { 
     includePaths: [paths.bootstrap + 'stylesheets/'] 
    }) 
    .scripts([ 
     'js/app.js' 
    ], 'public/js/app.js', paths.assets) 
    .scripts([ 
     // paths.jquery + "dist/jquery.js", 
     paths.bootstrap + "javascripts/bootstrap.js", 
     paths.assets + "js/freelancer/classie.js", 
     paths.assets + "js/freelancer/cbpAnimatedHeader.js", 
     paths.assets + "js/freelancer/jqBootstrapValidation.js", 
     paths.assets + "js/freelancer/contact_me.js", 
     paths.assets + "js/freelancer/freelancer.js" 
    ], 'public/js/dependencies.js', './') 
    .version([ 
     'public/js/dependencies.js', 
     'public/js/app.js', 
     'public/css/app.css']) 
    .copy(paths.bootstrap + 'fonts/bootstrap/**', 'public/build/fonts') 
    .copy(paths.assets + 'fonts/font-awesome/', 'public/build/fonts'); 
+0

Penso Elixir non ha ancora implementare questa funzione. Dai un'occhiata a questo: https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md. Penso che dovrai hackerare l'elisir o usare solo gulp per ottenere quello che vuoi. Puoi prendere gli ingredienti dell'elisir e usarli al di fuori dell'elisir. –

+0

È perché gulp esegue le cose in modo sincrono per impostazione predefinita, tuttavia se si dà un'occhiata al file elixir package.json vedrete che è in esecuzione in sequenza. Usalo per eseguire i tuoi compiti asincroni. –

risposta

1

laravel Elixir recentemente ha ottenuto aggiornato e una delle prime cose che questo articolo parla è l'ordine di cui vengono eseguiti cose.

E sembra essere stato un bug che è fissato nella sua ultima versione:

https://laravel-news.com/2015/07/laravel-elixir-version-3-is-released/

+0

Grande, grazie. Sembrava strano che non fosse, ma in primo luogo, ma una grande notizia. – Simon

+0

Mi sembra che ci sia una differenza tra (1) assicurare che i task siano attivati ​​in sequenza e (2) assicurare che l'attività precedente sia completa prima di eseguire quella successiva in quella sequenza. È del tutto possibile essere sequenziali, eppure asincroni. Elixir v3 garantisce che le attività vengano eseguite in sequenza, ma AFAICT non indirizza la sincronicità, quindi alcune build potrebbero non riuscire, a seconda della configurazione. –

Problemi correlati