2015-02-12 9 views
7

Ich habe Probleme mit Laravel Elixir und arbeite in der Reihenfolge, in der die Dinge ausgeführt werden. Ich habe mir denken lassen, dass die Verkettung von Elixieraufrufen sie zur synchronen Ausführung zwingt, aber ich hatte Probleme, wo bestimmte Befehle unter bestimmten Umständen scheinbar nicht ausgeführt werden oder scheinbar in einer Reihenfolge ausgeführt werden, die bedeutet, dass sie nicht ordnungsgemäß ausgeführt werden .Asynchrone Ausführung von Laravel Elixir-Befehlen

Mein erstes Problem war, dass die dependencies.js Datei wurde von der version() Funktion nie versioniert werden, bis ich die beiden scripts() Funktionen runden getauscht, so dass der eine für dependencies.js Sekunden lief.

Ein weiteres Problem ist, dass, wenn ich die Aufgaben über die gulp Funktion ausführen, die meisten Male, die Schriftart-awesome Schriften in das Build-Verzeichnis kopiert werden. Wenn sie jedoch gulp watch ausführen, werden sie oft weggelassen.

Ich bin in der Lage, um diese beiden Probleme zu arbeiten, aber ich sehe kleine Dinge wie diese, die mich denken lassen, dass ich die Ausführungsreihenfolge und Feinheiten um es nicht völlig verstehe. Weiß jemand, ob ich etwas Offensichtliches vermisse?

Danke.

Hier ist mein gulpfile.js Code:

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

Ich denke, Elixir diese Funktion noch nicht implementiert. Sieh dir das an: https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md. Ich denke, du musst Elixier hacken oder einfach nur schlucken, um zu erreichen, was du willst. Sie können die Elixir Zutaten nehmen und sie außerhalb des Elixiers verwenden. –

+0

Das liegt daran, dass gulp die Dinge standardmäßig synchron ausführt. Wenn Sie sich jedoch die Datei elixir package.json ansehen, werden Sie sehen, dass sie eine run-sequence enthält. Verwenden Sie das, um Ihre Aufgaben asynchron auszuführen. –

Antwort

1

Laravel Elixir wurde kürzlich aktualisiert und eines der ersten Dinge Dieser Artikel spricht über die Reihenfolge ausgeführt werden, von denen Dinge.

Es scheint ein Fehler gewesen zu sein, die in der neuesten Version behoben:

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

+0

Großartig, danke. Es schien sonderbar, dass es nicht, aber in erster Linie, aber gute Neuigkeiten. – Simon

+0

Ich glaube, es gibt einen Unterschied zwischen (1) sicherzustellen, dass Aufgaben nacheinander ausgelöst werden, und (2) sicherzustellen, dass die vorherige Aufgabe abgeschlossen ist, bevor die nächste in dieser Reihenfolge ausgeführt wird. Es ist durchaus möglich, sequentiell und dennoch asynchron zu sein. Elixir v3 stellt sicher, dass Aufgaben nacheinander ausgeführt werden, aber AFAICT, es adressiert nicht die Synchronität, sodass einige Builds je nach Setup möglicherweise fehlschlagen. –