【问题标题】:Laravel elixir version looking in the build directory incorrectlyLaravel elixir 版本在构建目录中查找不正确
【发布时间】:2016-01-13 01:08:43
【问题描述】:

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

当我对它们进行版本控制时,默认情况下,它们会输出到我的公用文件夹中的“/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. 将公共资产放入'build'目录是否正常?

【问题讨论】:

  • 遇到完全相同的问题...看起来像一个错误。

标签: php laravel


【解决方案1】:

我遇到了同样的问题。

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

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

【讨论】:

    猜你喜欢
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    相关资源
    最近更新 更多