Ich erstelle eine modulare Laravel 5.2 App, die aus einer Reihe von proprietären Paketen besteht, die auf einer Laravel-Installation mit Composer geladen werden.Laravel Elixir Kopie funktioniert nicht auf symbolische Links
Jedes der Pakete ist verantwortlich für die Verwaltung seiner eigenen Assets (in den Öffentlichen Ordner kopieren, komprimieren, versionieren usw.). Um dies zu erreichen, habe ich eine Gulp-Datei, die Elixir für jedes Paket verwendet, und dann werden sie auf die Haupt-Gulp-Datei der Laravel-Installation geladen.
Dies ist die Haupt gulpfile.js auf der Laravel Installation:
var filesystem = require("fs");
var gulp = require('gulp');
var elixir = require('laravel-elixir');
gulp.task('default', function() {
runPackagesGulpFiles();
});
function runPackagesGulpFiles() {
var packagesPath = 'vendor/my-organization/';
filesystem.readdirSync(packagesPath).forEach(function (file){
try {
var gulpFilePath = packagesPath + file + '/resources/assets/gulpfile.js';
var fileStat = filesystem.statSync(gulpFilePath);
require('./' + gulpFilePath);
} catch (error) {
if (error.message.indexOf('no such file or directory') < 0) {
console.error(error.stack);
}
}
});
}
Alle wichtigen gulpfile.js der Fall ist, ist die Pakete gulpfiles ausführen, wenn sie eine require()
Funktion existieren verwenden.
Im Folgenden ist ein Beispiel für ein Paket gulpfile:
var elixir = require('laravel-elixir');
elixir(function(mix) {
mix.copy('vendor/my-organization/store-manager/resources/assets/js/', 'public/assets/js/elixir_components/store-manager/');
mix.version([
//Store structure versioning
'assets/js/elixir_components/store-manager/stores/store.js',
'assets/js/elixir_components/store-manager/stores/views.js',
'assets/js/elixir_components/store-manager/stores/models.js',
'assets/js/elixir_components/store-manager/stores/controllers.js',
//Store resources versioning
'assets/js/elixir_components/store-manager/resources/resources.js',
'assets/js/elixir_components/store-manager/resources/views.js',
'assets/js/elixir_components/store-manager/resources/models.js',
'assets/js/elixir_components/store-manager/resources/controllers.js',
//Store structure resources versioning
'assets/js/elixir_components/store-manager/structures/structure.js',
'assets/js/elixir_components/store-manager/structures/views.js',
'assets/js/elixir_components/store-manager/structures/models.js',
'assets/js/elixir_components/store-manager/structures/controllers.js',
]);
});
In einem normalen Fall dies ganz gut funktioniert. Ein Normalfall ist, dass die Pakete mit Composer geladen werden.
Für die Entwicklung der Pakete, ich erstelle jedoch einen symbolischen Link im Herstellerordner, der auf den Paketordner auf meinem lokalen Rechner zeigt.
Wenn ich versuche, schluck in der Entwicklungsumgebung auszuführen, erhalte ich einen Cannot find module 'laravel-elixir'
Fehler:
[22:27:03] Using gulpfile ~/supermarket-cms/gulpfile.js
[22:27:03] Starting 'default'...
Error: Cannot find module 'laravel-elixir'
at Function.Module._resolveFilename (module.js:339:15)
at Function.Module._load (module.js:290:25)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at Object.<anonymous> (/home/vagrant/Code/store-manager/resources/assets/gulpfile.js:1:76)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
[22:27:03] Finished 'default' after 12 ms
Problem, das ich global durch die Installation Laravel-Elixier gelöst. Aber nachdem ich das getan habe, endet die Schluckaufgabe und mein Vermögen wird nicht kopiert.
[21:25:02] Using gulpfile ~/supermarket-cms/gulpfile.js
[21:25:02] Starting 'default'...
[21:25:02] Finished 'default' after 3.78 ms
Kein Fehler erscheint überhaupt. Hoffe jemand kann mir helfen. Vielen Dank.
sind auf einem Windows-Host Sie Vagrant verwenden? –
@ MarcoAurélioDeleu Nein, ich benutze Homestead auf Mint. – BernalCarlos