Laravel Elixir Gulp混合了两个单独的文件

时间:2015-03-25 10:59:14

标签: gulp laravel-5 gulp-less laravel-elixir

在Laravel 5中,我试图为我的前端站点和后端站点(cms)创建两个不同的css文件。源文件位于两个不同的目录中。

中资产的默认值

首先是后端

elixir.config.assetsDir = 'resources/backend/';

elixir(function (mix) {
    mix.less('backend.less');
});

第二个前端

elixir.config.assetsDir = 'resources/frontend/';

elixir(function (mix) {
    mix.less('frontend.less');
});

两者都在同一个gulpfile.js。

这些是目录(Laravel 5)

resources
    backend
        less
            backend.less
    frontend
        less
            frontend.less

只有前端文件被编译为public / css / frontend.css。

我也试过

mix.less('frontend.less', null, 'resources/frontend/');

虽然这适用于混合脚本文件,但它不能用于混合较少的文件。

**更新28-3-2015 **

我的问题似乎没有解决办法。当我这样做时:

elixir.config.assetsDir = 'resources/frontend/';
mix.less('frontend.less');

elixir.config.assetsDir = 'resources/backend/';
mix.less('backend.less');

仅执行最后一个(后端)。当我在注释中放置最后两行时,执行第一行(前端)。现在没关系,因为后端样式不应经常更改,但将多个资源文件夹中的少量文件混合到多个目标文件夹会非常好。

4 个答案:

答案 0 :(得分:0)

尝试:

elixir(function(mix) {
    mix.less([
        'frontend/frontend.less',
        'backend/backend.less'
    ], null, './resources');
});

答案 1 :(得分:0)

而不是你的变体:

elixir(function(mix) {
    elixir.config.assetsDir = 'resources/frontend/';
    mix.less('frontend.less');

    elixir.config.assetsDir = 'resources/backend/';
    mix.less('backend.less');
});

试试这段代码:

elixir.config.assetsDir = 'resources/frontend/';
elixir(function(mix) {
    mix.less('frontend.less');
});

elixir.config.assetsDir = 'resources/backend/';
elixir(function(mix) {
    mix.less('backend.less');
});

答案 2 :(得分:0)

我已经玩了几天了,到目前为止我找到的最佳选择如下。

首先将资源文件保留在默认位置,因此对于较少的文件,请查看 resources / assets / less 。然后将文件分成前端和后端资源,在特定资源文件夹中添加子文件夹,如下所示,

resources/assets/less/frontend/frontend.less
resources/assets/less/backend/backend.less

现在打电话给每个人..

    mix.less('frontend/frontend.less', 'public/css/frontend/frontend.css');
    mix.less('backend/backend.less', 'public/css/backend/backend.css');

为每个mix.less提供的第二个参数可以指向您想要的任何位置。

您不能直接在资源根目录中以最高级别进行拆分,但它仍然允许一些分离,并且所有内容都编译为一个 gulp

答案 3 :(得分:0)

我找到了以下工作:

elixir(function (mix) {

    mix
      .less(['app.less'], 'public/css/app.css')
      .less(['bootstrap.less'], 'public/css/bootstrap.css');

});

需要注意的关键事项:

  • 在目的地提供文件名,即写public/css/app.css而不是public/css/
  • 链接.less来电,而不是进行两次单独的mix.less()来电

使用laravel-elixir版本3.4.2

为我工作