1

我正在使用 laravel elixir 并分配这样的版本

mix.version([
    'public/assets/css/all.css',
    'public/assets/js/all.js'
]);

我这样称呼它为元标记

{{ elixir('assets/css/all.css') }}

元标记的结果是

 <link href="/build/assets/css/all-5ca511c0.css" rel="stylesheet" type="text/css">

我想知道有什么办法可以改变路径

<link href="assets/css/all-5ca511c0.css" rel="stylesheet" type="text/css">

不久我想从路径中删除“构建”。感谢提前

4

2 回答 2

2

从 Laravel 5.2 开始,Elixir 可以选择设置自定义路径,但没有记录。要使用没有构建子文件夹的公用文件夹,您可以使用:

elixir(function(mix) {
    mix.version(['css/all.css', 'js/all.js'], 'public');
});

// For referencing the css
// null -> base directory (public)
<link rel="stylesheet" href="{{ elixir('css/all.css', null) }}"> 

这篇博文为 5.2 之前的 Laravel 版本提供了很好的解释和解决方法。

于 2017-03-01T16:30:17.977 回答
0

以下是elixir()辅助函数的完成方式,位于vendor/laravel/framework/src/Illuminate/Foundation/helpers.php

if ( ! function_exists('elixir'))
{
    /**
    * Get the path to a versioned Elixir file.
    *
    * @param  string  $file
    * @return string
    */
    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.");
    }
}

方法一

如您所见,它仅在不存在时才定义此函数。因此,一种解决方法是使用您自己的自定义代码定义它,并确保 Composer 自动加载器首先加载它。但是,它可能会有点技巧,所以我建议另一种方法:

方法二

创建您自己的辅助函数(使用另一个名称)!只需将其命名为您想要的任何名称,删除两个build引用并使用它。此外,请确保不时检查原始功能以确保您的代码符合要求。

于 2015-04-02T11:59:52.190 回答