2016-03-04 2 views
0

В настоящее время у меня есть каталог resources/assets, структурированный немного иначе, чем обычный, поскольку я хочу иметь несколько «тем» в моем проекте.Укажите каталог ввода для Laravel Elixir/SASS

В настоящее время у меня есть следующие структуры:

resources/assets/theme-one/scss/* 
resources/assets/theme-one/coffee/* 

И

resources/assets/theme-two/scss/* 
resources/assets/theme-two/coffee/* 

Теперь я пытаюсь построить мой gulpfile.js с помощью эликсира (для темы-один в настоящее время), и я пытаюсь укажите каталог ввода для моих файлов SASS.

var elixir = require('laravel-elixir'); 

elixir(function(mix) { 
    mix.sass(['app.scss'], 'public/theme-one/css/app.css'); 
}); 

Конечно, приведенный выше код будет выглядеть в каталоге resources/assets/sass по умолчанию, но я хочу сказать ему, чтобы посмотреть в каталоге resources/assets/theme-one/scss вместо этого.

Я пробовал всевозможные комбинации, чтобы попытаться заставить его работать, но кажется, что независимо от того, что я пытаюсь, Elixir/gulp-sass всегда пытается посмотреть в resources/assets/sass, и я получаю ошибки File not found: resources\assets\sass\app.scss.

Я пробовал:

  • Добавление третьего параметра, указав каталог ввода
  • Указания полного пути к файлу по отношению к моим gulpfile.js т.е. resources/assets/theme-one/scss/app.scss
  • Переключения круглого второй и третьей параметры
  • Копаем в исходный код (https://github.com/laravel/elixir/blob/master/tasks/sass.js и https://github.com/laravel/elixir/blob/master/GulpPaths.js), чтобы выяснить, как указать каталог ввода.
  • Приставки app.scss в параметре 1 с ./ и полным путем (Из комментария и код, начинающийся в строке 97 в GulpPaths.js, объясняя, что префиксы пути с ./ бы по существу пропустить префиксы)

I «Мне не повезло. Есть идеи?

Единственное «решение», о котором я мог подумать, - это изменить структуру проекта обратно на то, как Эликсир хочет его, то есть resources/assets/sass/theme-one/app.scss и resources/assets/coffee/theme-one/app.coffee и т. Д., Но это не то, что я хочу сделать. Если все остальное терпит неудачу, я полагаю, я мог бы просто бин Эликсир и просто использовать глоток, как есть.

Редактировать

Я теперь попытался изменить пункт assetsPath конфигурации в моем gulpfile.js так:

var elixir = require('laravel-elixir'); 

elixir.config.assetsPath = "resources/assets/theme-one"; 
elixir.config.publicPath = "public/theme-one"; 

elixir(function(mix) { 
    mix.sass(['app.scss']); 
}); 

Я все еще получаю File not found: resources/assets/sass/app.scss

ответ

2

Вы можете переопределить default config из Эликсир (государственные и активы):

//in your gulp file : 
var elixir = require('laravel-elixir'); 

elixir.config.assetsPath = "resources/assets/theme-one"; 
elixir.config.publicPath = "public/theme-one"; 

elixir(function(mix) { 
    mix.sass('app.scss'); 
}); 

elixir.config.assetsPath = "resources/assets/theme-two"; 
elixir.config.publicPath = "public/theme-two"; 

elixir(function(mix) { 
    mix.sass('app.scss'); 
}); 

Остерегайтесь, для более старых версий (до 3.0) Эликсира вам необходимо переопределить config как так:

elixir.config.assetsDir = "resources/assets/theme-one"; 
elixir.config.publicDir = "public/theme-one"; 

Как отмечалось в комментариях по Jonathon

+0

Спасибо за ваш ответ. Я пробовал то, что вы предложили, и все еще получаю 'File not found: resources/assets/sass/app.scss'. Я обновлю свой вопрос с моим текущим 'gulpfile.js' – Jonathon

+0

Попробуйте использовать' mix.sass ('app.scss'); 'без скобок. Хорошо работает для меня – shempignon

+0

Ничего, я выяснил проблему. У меня должна быть более старая версия Elixir. Мой конфиг имеет опции 'assetsDir' и' publicDir', а не 'assetsPath' и' publicPath'. Если вы обновите свой вопрос, чтобы упомянуть эти два возможных варианта, я отвечу на ваш ответ :) – Jonathon