为 Laravel Elixir/SASS 指定输入目录

Specify input directory for Laravel Elixir/SASS

我目前的 resources/assets 目录结构与正常目录有点不同,因为我想在我的项目中有多个 "themes"。

目前我有以下结构:

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

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

现在我正在尝试使用 Elixir 构建我的 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 个错误。

我试过:

我一点运气都没有。有什么想法吗?

我唯一能想到的 "solution" 是将我的项目结构改回 Elixir 想要的方式,即有 resources/assets/sass/theme-one/app.scssresources/assets/coffee/theme-one/app.coffee 等,但这不是我想要的想要做。如果一切都失败了,我想我可以将 Elixir 装箱并按原样使用 gulp。

编辑

我现在尝试像这样更改 gulpfile.js 中的 assetsPath 配置项:

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

您可以覆盖 Elixir 的 default config(public 和资产):

//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

在评论中指出的那样