Задать вопрос
@KBBS

Laravel-mix. Возможна ли раздельная сборка ресурсов для фронта и админки?

Здравствуйте.
Есть публичная часть сайта (далее frontend) и административная (backend).
Ресурсы (css, js) собираются через laravel-mix. Микс шестой версии.
На выходе хочу получить примерно такую структуру директорий: public/assets/frontend/js/ - с файлами, относящимися к фронту, и public/assets/backend/js/ - с файлами бэка.
При этом, ключевой момент, чтобы для фронта и бэка генерировались собственные manifest.js и vendor.js.
К сожалению, никак не могу добиться такого результата.

Наиболее рабочий вариант, который у меня получился, это разбить общий webpack.mix.js на отдельные webpack.mix.frontend.js и webpack.mix.backend.js. А в package.json прописать отдельные скрипты для сборки с явным указанием --mix-config: --mix-config webpack.mix.frontend и --mix-config webpack.mix.backend соответственно.
Такое даже работает. Но при этом ожидаемо переписывается mix-manifest.json, что мне не особо подходит. Имею ввиду, что если собираю ресурсы для бэка, то в mix-manifest.json будут только они, а записи для фронта теряются.

Вообще, насколько реально осуществить то, что я хочу, в рамках laravel-mix?

Спасибо.
  • Вопрос задан
  • 419 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 2
delphinpro
@delphinpro Куратор тега Laravel
frontend developer
spoiler
Вы можете сделать дополнительные таски в package.json
Вы можете писать условия в webpack.mix.js

Доп. таски:

scripts: {
        "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --config=node_modules/laravel-mix/setup/webpack.config.js"
        "production:admin": "cross-env TARGET=admin NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --config=node_modules/laravel-mix/setup/webpack.config.js"
}


Проверка

const mix = require('laravel-mix');

if (process.env.TARGET == 'admin') {

  mix.js('src/admin.js', 'dist');

} esle {

  mix.js('src/front.js', 'dist');

}

// Общие настройки

if (mix.inProduction()) mix.version();



UPD

Сорри. Вы уже сделали разделение.

по поводу разных манифестов только одна мысль — переписать конфигурацию webpack, а именно настройку плагина Manifest. Т.е. через метод API .override() попробовать задавать разные имена для манифестов.
Ответ написан
Комментировать
alvvi
@alvvi
export default apathy;
Вот такой есть солюшн с изменением publicPath, соответсвенно в разных путях будут лежать разные манифесты.
https://github.com/JeffreyWay/laravel-mix/issues/1...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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