2016-01-13 51 views
1

我正在使用Laravel Elixir(5.2)来执行一些吞吐任务,如连接文件然后对其进行版本控制。Laravel elixir版本在构建目录中查找不正确

当我版本他们,默认情况下,他们输出到我的公共文件夹中的“/ build”目录。我不希望发生这种情况 - 我希望它们在没有构建文件夹的情况下达到一个级别。

看看Elixir的源代码,我可以看到你可以将一个目录作为另一个参数传递给version方法,并在那里创建文件。

但是,当您尝试运行应用程序时,它会在构建目录中查找清单时引发异常。的laravel\framework\src\Illuminate\Foundation\helpers.php

线295具有以下的功能,这就是所谓的刀片模板来获取路径,版本文件的文件名:

function elixir($file) 
{ 
    static $manifest = null; 

    if (is_null($manifest)) { 
     $manifest = json_decode(file_get_contents(public_path('build/rev-manifest.json')), true); 
    } 

    if (isset($manifest[$file])) { 
     return '/build/'.$manifest[$file]; 
    } 

    throw new InvalidArgumentException("File {$file} not defined in asset manifest."); 
} 

我可以通过删除的硬编码解决我的问题建立目录。 2个问题: 1.这是Laravel的错误吗? 2.将公共资产放入“build”目录是否正常?

+0

具有完全相同的问题...看起来像一个错误。 – suncoastkid

回答

0

我有同样的问题。

为了使用elixir辅助方法,您必须在build文件夹中同时拥有资产和rev-manifest。 即使您使用正确的路径创建rev-manifest.json并将其存储在build/so elixir可以达到的位置,它仍然会创建前缀为build/前缀的资产路径。

我结束了创建我自己的辅助函数来解决从根文件夹路径(基本上是相同的代码,没有硬编码编译/部分)