HMR с Webpack / Laravel Mix / AdonisJS

У меня возникают большие трудности с тем, чтобы Hot Module Replacement (HMR) Webpack работал для моего стека приложений, а именно:

  • Adonisjs v4.0.28
  • Laravel Mix v2.1.11
  • Webpack v3.11.0
  • Vue v2.5.16

Все ресурсы внешнего приложения загружаются с сервера webpack-dev-server, а не с сервера приложений Adonis, например:

<script src="http://localhost:8080/js/manifest.js" />
<script src="http://localhost:8080/js/vendor.js" />
<script src="http://localhost:8080/js/app.js" />

Мое приложение загружается и выполняется успешно, и когда я запускаю webpack-dev-server и я вношу изменения в исходный код, оно правильно обновляет файл mix-manifest.json, добавляя файлы «горячего обновления», которые все доступны по их URL-адресам.

{
    "/js/app.js": "/js/app.js",
    "/css/app.css": "/css/app.css",
    "/js/vendor.js": "/js/vendor.js",
    "/js/manifest.js": "/js/manifest.js",
    "/0.e28262e7e8d825cfaa1a.hot-update.js": "/0.e28262e7e8d825cfaa1a.hot-update.js",
    "/0.1a35d37d2386038f6c78.hot-update.js": "/0.1a35d37d2386038f6c78.hot-update.js"
}

Я не уверен, как дальше устранять неполадки или что я делаю неправильно, чтобы HMR заработал.


Конфигурация

сценарий npm:

node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node node_modules/webpack-dev-server/bin/webpack-dev-server.js --hot --config=node_modules/laravel-mix/setup/webpack.config.js

webpack.mix.js:

const Env = require('@adonisjs/framework/src/Env');
const mix = require('laravel-mix');
const webpack = require('webpack');

const env = new Env(__dirname);
const appUrl = JSON.stringify(env.get('APP_URL'));
mix.webpackConfig({
  plugins: [
    new webpack.DefinePlugin({ APP_URL: appUrl }),
  ],
  devServer: {
    inline: true,
    quiet: false,
  },
});

mix
  .setPublicPath('public')
  .js('resources/assets/js/app.js', 'public/js')
  .extract(['vue', 'vue-router', 'axios'])
  .sass('resources/assets/sass/app.scss', 'public/css')
  .sourceMaps()
  .disableNotifications();

Полная конфигурация Webpack, созданная Laravel Mix:

https://gist.github.com/jarodhayes/3e2accb996f6884321671bcd4cc2b690


person jarodh    schedule 04.05.2018    source источник


Ответы (1)


Похоже, это проблема с Laravel Mix v2. Следующие изменения кода в модуле laravel-mix устранили проблему для меня:

https://github.com/JeffreyWay/laravel-mix/issues/1437#issuecomment-365484126

person jarodh    schedule 06.05.2018