Laravel elixir版本在构建目录中查找错误


Laravel elixir version looking in the build directory incorrectly

我使用Laravel Elixir(5.2)来执行一些简单的任务,例如连接文件,然后对其进行版本控制。

当我对它们进行版本设置时,默认情况下,它们会输出到我的公用文件夹中的"/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的bug吗?2.将公共资产放入"构建"目录是否正常?

我也遇到了同样的问题。

您必须在构建文件夹中同时具有assets和rev清单,才能使用elixir辅助方法。即使您使用正确的路径创建rev-manifest.json并将其存储在build/中,以便elixir可以访问它,它仍然会创建到带有build/前缀的资产的路径。

我最终创建了自己的助手函数来解析根文件夹中的路径(基本上是相同的代码,没有硬编码的构建/部件)