app
bin
config
environments
initializers
locales
webpack
loaders
configuration.js
development.js
generateLocalePacks.js
production.js
shared.js
test.js
translationRunner.js
application.rb
boot.rb
brakeman.ignore
database.yml
deploy.rb
environment.rb
i18n-tasks.yml
navigation.rb
puma.rb
routes.rb
secrets.yml
settings.yml
sidekiq.yml
themes.yml
webpacker.yml
db
docs
lib
log
nanobox
public
spec
streaming
vendor
.babelrc
.buildpacks
.codeclimate.yml
.dockerignore
.editorconfig
.env.nanobox
.env.production.sample
.env.test
.env.vagrant
.eslintignore
.eslintrc.yml
.foreman
.gitattributes
.gitignore
.haml-lint.yml
.nanoignore
.nvmrc
.postcssrc.yml
.profile
.rspec
.rubocop.yml
.ruby-version
.scss-lint.yml
.slugignore
.travis.yml
.yarnclean
Aptfile
CODEOWNERS
CODE_OF_CONDUCT.md
CONTRIBUTING.md
Capfile
Dockerfile
Gemfile
Gemfile.lock
ISSUE_TEMPLATE.md
LICENSE
Procfile
Procfile.dev
README.md
Rakefile
Vagrantfile
app.json
boxfile.yml
config.ru
docker-compose.yml
docker_entrypoint.sh
jest.config.js
package.json
scalingo.json
yarn.lock
* 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.
43 lines
1.0 KiB
JavaScript
43 lines
1.0 KiB
JavaScript
// Note: You must restart bin/webpack-dev-server for changes to take effect
|
|
|
|
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',
|
|
|
|
stats: {
|
|
errorDetails: true,
|
|
},
|
|
|
|
output: {
|
|
pathinfo: true,
|
|
},
|
|
|
|
devServer: {
|
|
clientLogLevel: 'none',
|
|
https: settings.dev_server.https,
|
|
host: settings.dev_server.host,
|
|
port: settings.dev_server.port,
|
|
contentBase: output.path,
|
|
publicPath: output.publicPath,
|
|
compress: true,
|
|
headers: { 'Access-Control-Allow-Origin': '*' },
|
|
historyApiFallback: true,
|
|
disableHostCheck: true,
|
|
watchOptions: watchOptions,
|
|
},
|
|
});
|