2016-01-14 2 views
2

Мне нужно проверить, существует ли файл, прежде чем пытаться объединить все предварительно скомпилированные библиотеки интерфейса, которые я использую на своем веб-сайте.Проверьте, существует ли файл перед вызовом задачи на Laravel Elixir 5.2

Это мой gulpfile.js до сих пор:

var elixir  = require('laravel-elixir'), 
    fs = require('fs'), 
    assetsPath = './resources/assets/', 
    bowerPath = assetsPath + 'bower/', 
    cssPath = assetsPath + 'css/'; 

elixir(function(mix) { 
    var cssLibraries = [ 
     bowerPath + 'bootstrap/dist/css/bootstrap.min.css', 
     bowerPath + 'font-awesome/css/font-awesome.min.css', 
     bowerPath + 'Ionicons/css/ionicons.min.css', 
     bowerPath + 'AdminLTE/dist/css/AdminLTE.min.css', 
     bowerPath + 'AdminLTE/dist/css/skins/skin-black-light.css', 
     bowerPath + 'iCheck/skins/flat/blue.css', 
     bowerPath + 'morris.js/morris.css', 
     bowerPath + 'AdminLTE/plugins/jvectormap/jquery-jvectormap-1.2.2.css', 
     bowerPath + 'bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css', 
    ]; 
    fs.access(cssPath + '000-processed.css', function(err) { 
     // if libraries are already combined I don't neet to do it again 
     if (!err) { 
      console.log('I will *NOT* combine pre-compiled CSS.'); 
      return; 
     } 
     console.log('I will combine pre-compiled CSS.'); 
     mix.combine(cssLibraries, cssPath + '000-processed.css'); 
    }); 
    mix.sass('**', cssPath + '001-sass.css'); 
}); 

Функция mix.combine() никогда не выполняется, хотя соединение является действительным объектом и console.log функция выполняется.

Может кто-нибудь сказать мне, если это действительная стратегия и почему она не работает?

ответ

1

Я использую statSync потому mix.combine() не работает внутри обратного вызова.

Я знаю, что это неправильно, чтобы поймать исключение и принять правильные действия после этого, но до сих пор я не нашел другого решения.

elixir(function(mix) { 
    try { 
     fs.statSync(tmpPath + '000-compiledsss.css'); 
    } catch (err) { 
     console.log("File do not exists, I will combine!"); 
    } 
} 
+0

Пробовал разные вещи, которые кажутся единственным способом заставить все работать ... Трудно, но дело сделано! – Jiedara

1

Вы можете использовать стат, чтобы проверить, существует ли файл в Gulp:

+1

Проблема заключается в том, что mix.combine не работает внутри обратного вызова. –

 Смежные вопросы

  • Нет связанных вопросов^_^