Изменить путь версии эликсира ларавеллы

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

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

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

1

Решение

Вот как 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

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

Подход 2

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

0

Другие решения

Начиная с 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.

2

По вопросам рекламы [email protected]