指定Laravel Elixir / SASS的输入目录

时间:2016-03-04 01:22:40

标签: laravel sass gulp gulp-sass laravel-elixir

我目前的resources/assets目录的结构与普通目录略有不同,因为我希望在我的项目中有一些“主题”。

目前我有以下结构:

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

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

现在我正在尝试使用Elixir构建我的gulpfile.js(目前主题为1),我正在尝试为我的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并得到{{ 1}}错误。

我试过了:

我根本没有运气。有什么想法吗?

我能想到的唯一“解决方案”是将我的项目结构改回Elixir想要的方式,即有GulpPaths.js./等,但这不是我想做的事情。如果所有其他方法都失败了,我想我可以直接使用Elixir并按原样使用gulp。

修改

我现在尝试更改resources/assets/sass/theme-one/app.scss中的resources/assets/coffee/theme-one/app.coffee配置项,如下所示:

assetsPath

我仍然得到gulpfile.js

1 个答案:

答案 0 :(得分:3)

您可以覆盖Elixir的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');
});

请注意,对于Elixir的旧版本(3.0之前),您需要覆盖config,如下所示:

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

正如Jonathon

的评论所指出的那样