about summary refs log tree commit diff
path: root/config/webpack
diff options
context:
space:
mode:
authoraschmitz <andy.schmitz@gmail.com>2017-10-04 02:52:11 -0500
committerEugen Rochko <eugen@zeonfederated.com>2017-10-04 09:52:11 +0200
commit2076c557c907e118dbafc92170fc9fb0cba597df (patch)
tree16163f9e749e19ea8710ce54a0634a7a8e68ec31 /config/webpack
parentd40c9140e8c02c63b675d9c9a2a44ee20c5a9f31 (diff)
Configure webpack to poll for changes in development (#5040)
* Configure webpack to poll for changes in development

Vagrant on Linux/macOS hosts shared files via NFS, which doens't
support inotify-based watching of files. This tweak makes webpack
check for changes every second, and rebuild if necessary. This
removes the need to restart Foreman every time a frontend file
changes. Note that rebuilding is still a relatively lengthy
process.

The polling frequency can be changed to taste.

* Only poll in Vagrant

This tests for the presence of the VAGRANT environment variable to
determine whether or not we're in Vagrant. It is set in .env.vagrant,
which is set up to be included in the Vagrantfile.
Diffstat (limited to 'config/webpack')
-rw-r--r--config/webpack/development.js15
1 files changed, 12 insertions, 3 deletions
diff --git a/config/webpack/development.js b/config/webpack/development.js
index 830183c0d..12670f5cd 100644
--- a/config/webpack/development.js
+++ b/config/webpack/development.js
@@ -4,6 +4,17 @@ const merge = require('webpack-merge');
 const sharedConfig = require('./shared.js');
 const { settings, output } = require('./configuration.js');
 
+const watchOptions = {
+  ignored: /node_modules/,
+};
+
+if (process.env.VAGRANT) {
+  // If we are in Vagrant, we can't rely on inotify to update us with changed
+  // files, so we must poll instead. Here, we poll every second to see if
+  // anything has changed.
+  watchOptions.poll = 1000;
+}
+
 module.exports = merge(sharedConfig, {
   devtool: 'cheap-module-eval-source-map',
 
@@ -26,8 +37,6 @@ module.exports = merge(sharedConfig, {
     headers: { 'Access-Control-Allow-Origin': '*' },
     historyApiFallback: true,
     disableHostCheck: true,
-    watchOptions: {
-      ignored: /node_modules/,
-    },
+    watchOptions: watchOptions,
   },
 });