Перезагрузка сервера Webpack dev не работает в виртуальной коробке

Я запускаю сервер webpack на виртуальной коробке с Ubuntu 15.10, используя брандмауэр над Mac OSX.

Конфигурация webpack довольно чистая:

var HtmlWebpackPlugin = require('html-webpack-plugin');
var path = require('path');
var webpack = require('webpack');

var MINIFY = process.env.MINIFY === true;

var FRONTEND_ROOT = './static'
var SRC_PATCH = FRONTEND_ROOT + '/scripts';
var BUILD_PATH = './dist';


module.exports = {
  entry: SRC_PATCH + '/main.js',
  devtool: 'source-map',
  output: {
      path: BUILD_PATH,
      filename: 'bundle.js'
  },
  resolve: {
    extensions: ['', '.js', '.jsx'],
    modulesDirectories: [SRC_PATCH, 'node_modules']
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: path.resolve(FRONTEND_ROOT, 'index-template.html'),
      minify: MINIFY
    })
  ],
  module: {
    loaders: [
      {
        test: /\.jsx|js$/,
        exclude: /node_modules/,
        loader: 'babel-loader'
      }
    ]
  },
  eslint: {
    configFile: './.eslintrc'
  }
};

Webpack был запущен на VM с помощью

[email protected]:/vagrant$ webpack-dev-server --port 8080 --devtool eval --progress --colors --hot --content-base dist

И когда я редактирую файл из OSX, он не перезагружается, но если я отредактирую тот же файл из VM, он перезагрузится.

В чем проблема? Как я могу это исправить?

Ответ 1

Я решил проблему с бродягой rsync-auto https://docs.vagrantup.com/v2/cli/rsync-auto.html

Я добавил строку config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync_auto: true, rsync_exclude: ".git/" в мой Vagrantfile и запустил vagrant rsync-auto под отдельной вкладкой.

Ответ 2

На это отвечает другой вопрос: fooobar.com/questions/623947/...

Если вы добавите параметр --watch-poll, он изменит способ поиска файлов в папке webpack.

webpack-dev-server --watch-poll --port 8080 --devtool eval --progress --colors --hot --content-base dist

Это делает опрос webpack для внесения изменений в файлы каждые N миллисекунд. Опрос работает в общих каталогах Vagrant, когда обычный метод не работает, потому что он не ищет атрибуты mtime или других файловых систем, просто считывает файлы с интервалом. Он медленнее и использует больше CPU/памяти, поэтому не используйте опрос, если вам не нужно.

https://webpack.github.io/docs/cli.html#watch

Ответ 3

Первое, что вам нужно увидеть, это если в консоли, где вы запускаете сервер, происходит перекомпилированный процесс или нет. Если "нет", то ответ находится в строке SyncFolder, которую @maxim-schepelin сказал выше. Если перекомпилируется, а веб-страница не перезагружается, возможно, решение webPack.

Изменить

Еще одна причина, по которой синхронизация папок работает неправильно https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers