Изменить путь к версии laravel elixir

Я использую эликсир laravel и назначаю такую ​​​​версию

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">

Вскоре я хочу удалить «сборку» из пути. Спасибо за аванс


person oxygen    schedule 02.04.2015    source источник


Ответы (2)


Вот как выполняется вспомогательная функция 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.");
    }
}

Подход 1

Как видите, он определяет эту функцию только в том случае, если она не существует. Таким образом, один из способов сделать это - определить его с помощью собственного пользовательского кода и убедиться, что автозагрузчик композитора загружает его первым. Но это может немного обмануть, поэтому я предлагаю другой подход:

Подход 2

Создайте свою вспомогательную функцию (с другим именем)! Просто назовите его как хотите, удалите две ссылки build и используйте его. А также не забывайте время от времени проверять исходную функцию, чтобы убедиться, что ваш код соответствует требованиям.

person Ravan Scafi    schedule 02.04.2015

Начиная с 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) }}"> 

Это сообщение в блоге дает хорошее объяснение и обходной путь для версий Laravel до 5.2.

person Bert H    schedule 01.03.2017