Laravel elixir编译多个文件

时间:2015-03-29 14:05:57

标签: laravel laravel-elixir

我在resources/assets/less文件夹style.lessadmin/style.less中有这两个文件。我想将这些文件编译为不同的路径,如下所示:

style.less已编译为public/css/

,另一个编译为public/admin/styles/

这就是我在gulpfile.js中所做的事情

elixir(function(mix) {
    mix.less('style.less', 'public/css/');
    mix.less('admin/style.less', 'public/admin/styles/');
});

但这只编译一个文件。 问题是什么?如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

我有一个项目可以将两个不同的文件编译为两个不同的css文件。 我看到的唯一区别是我指定了完整的目标路径,包括文件名。

因此,对于您的情况,它将是:

elixir(function(mix) {
    mix.less('style.less', 'public/css/style.css')
       .less('admin/style.less', 'public/admin/styles/style.css');
});

答案 1 :(得分:0)

我还没有得到答案。但是已经尝试了一些替代方案,思想会分享。

我以为我们可以像下面这样做

elixir(function(mix) {
    mix.less('style.less', 'public/css/')
       .less('admin/style.less', 'public/admin/styles/');
});

但根据documentation,我们不能多次调用sass或less方法。所以它只编译最新的less文件(在本例中为admin / style.css)。

我们可以这样做

elixir(function(mix) {
    mix.less(['style.less', 'admin/style2.less'], 'public/css/');
});

但这会将两者编译到同一个文件夹中。

希望知道,我们怎样才能在不同的文件夹中进行操作。

我尝试将第二个文件复制到一个单独的文件夹中,但这也不起作用

elixir(function(mix) {
    mix.less(['style.less', 'admin/style2.less'], 'public/css/')
       .copy('public/css/style2.css', 'public/admin/style.css');
});

可能这是因为每个请求都是异步的,当调用副本时,那个时候style2.css还没有准备好。

答案 2 :(得分:0)

mix.less('resources/assets/less/app.scss', 'public/css').
    less('resources/assets/less/admin/style.less', 'public/admin/styles');