【问题标题】:Specify input directory for Laravel Elixir/SASS为 Laravel Elixir/SASS 指定输入目录
【发布时间】: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 错误.

我试过了:

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

我能想到的唯一“解决方案”是将我的项目结构改回 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

【问题讨论】:

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


    【解决方案1】:

    您可以覆盖 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 在 cmets 中指出的那样

    【讨论】:

    • 感谢您的回答。我已经尝试了您的建议,但仍然收到File not found: resources/assets/sass/app.scss。我会用我当前的gulpfile.js 更新我的问题
    • 试试不带括号的mix.sass('app.scss');。适合我
    • 没关系,我已经找到了问题所在。我必须有旧版本的 Elixir。我的配置有assetsDirpublicDir 选项,而不是assetsPathpublicPath。如果您更新您的问题以提及这两个潜在选项,我会接受您的回答:)
    • 可能还值得一提的是,我需要在路径上添加斜杠。此外,除了 elixir.config.publicDir 之外,我还必须设置 elixir.config.cssOutputelixir.config.jsOutput 才能让它按我的意愿工作。
    • 感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2016-06-20
    相关资源
    最近更新 更多