g-unit
@g-unit

Как настроить html-webpack-plugin в laravel?

Задача в том, чтобы добавить хэш файлам при билде.
Конфиг вебпака:
export default {
    entry: {
        app: './react/src/app/index',
    },
    output: {
        path: __dirname + '/public',
        publicPath: '/',
        filename: 'assets/js/[name].[contenthash].bundle.js'
    },
    plugins: [
        new HTMLWebpackPlugin({
            template: './react/src/app/index.html'
        })
    ]
};

В целом, плагин отрабатывает - в папке publicу меня генерится нужный html и в него подставляется актуальный путь к файлу
<script src="/assets/js/app.e038cfa2f592a3f951d8.bundle.js"></script>

Только проблема в том, что Laravel не использует файл index.html из папки public. Содержимое берется из resources/views/index.blade.php где захордкожено прописан путь к файлу
<script defer src="{{ asset('assets/js/app.bundle.js') }}"></script>

- этот index.blade генерится автоматически на основе какого-то шаблона, либо создается вручную?
- как в него добавить правильный путь до JS файла, который генерит вебпак?

Пока все что удалось нагуглить, это плагин laravel-mix, курю его документацию...
  • Вопрос задан
  • 553 просмотра
Решения вопроса 1
g-unit
@g-unit Автор вопроса
Проблему в итоге решил средствами фреймворка через Laravel-mix
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
profesor08
@profesor08 Куратор тега JavaScript
Универсального решения я не подскажу, но у тебя есть html-webpack-lugin, твой index.html наверняка можно просто переименовать в .php файл, вставить необходимый код, а в доп параметрах указать путь, куда его сохранять в проекте laravel. Например в layoyts. Сам плагин подставит файлы скриптов и стилей, остальное не тронет.

new HTMLWebpackPlugin({
  template: './react/src/app/index.html'
})
Ответ написан
Комментировать
dima9595
@dima9595
Junior PHP
Я, что бы не заморачиваться с такой проблемой, делал следующее: добавлял некий хэш внутри подключения asset. Т.е. писал так:
<script defer src="{{ asset('assets/js/app.bundle.js') . "?" . md5(time()) }}"></script>

И тогда можно и не вытаскивать html файл бандла.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы