【发布时间】:2016-06-17 14:44:51
【问题描述】:
我目前的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(目前用于主题一),并且我正在尝试为我的 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),尝试找出如何指定输入目录。
- 在参数 1 中为
app.scss加上./和完整路径的前缀(来自GulpPaths.js中从第 97 行开始的注释和代码,解释了使用./为路径添加前缀实际上会跳过前缀)
我一点运气都没有。有什么想法吗?
我能想到的唯一“解决方案”是将我的项目结构改回 Elixir 想要的方式,即拥有 resources/assets/sass/theme-one/app.scss 和 resources/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
【问题讨论】:
标签: laravel sass gulp gulp-sass laravel-elixir