Я создаю модульное приложение Laravel 5.2, которое состоит из нескольких пакетов, запатентованных на установку Laravel с использованием композитора.Laravel elixir копия, не работающая над символическими ссылками
Каждый из пакетов несет ответственность за управление собственными активами (копирование в общую папку, сжатие, управление версиями и т. Д.). Для этого у меня есть gulpfile, который использует эликсир для каждого пакета, а затем они загружаются в основной файл gulp для установки laravel.
Это основные gulpfile.js по установке Laravel:
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);
}
}
});
}
Все основные gulpfile.js делает, это выполнить пакеты gulpfiles, если они существуют, используя require()
функцию.
Ниже приведен пример пакета 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',
]);
});
В обычном сценарии случае это работает просто отлично. Обычным сценарием является то, что пакеты загружаются с использованием композитора.
Однако для разработки пакетов я создаю символическую ссылку в папке поставщика, которая указывает на папку пакета на моей локальной машине.
Когда я пытаюсь выполнить глотка в среде разработки, я получаю сообщение об ошибке: Cannot find module 'laravel-elixir'
[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
Проблема, что я решил, установив Laravel-эликсир по всему миру. Но после того, как я это сделаю, задача gulp заканчивается, и мои активы не копируются.
[21:25:02] Using gulpfile ~/supermarket-cms/gulpfile.js
[21:25:02] Starting 'default'...
[21:25:02] Finished 'default' after 3.78 ms
Никакой ошибки не возникает. Надеюсь, кто-нибудь может мне помочь. Спасибо.
Вы используете Vagrant на хосте с Windows? –
@ MarcoAurélioDeleu Нет, я использую Homestead на Монетном дворе. – BernalCarlos