Browse Source

feat: Override NODE_ENV in devserver

Additionally this adds the ability to force WDS via FORCE_WEBPACK_DEV_SERVER as otherwise you are unable to achieve static assets in development.
David Cramer 5 years ago
parent
commit
d6c5bcd6e3
2 changed files with 6 additions and 1 deletions
  1. 4 0
      src/sentry/runner/commands/devserver.py
  2. 2 1
      webpack.config.js

+ 4 - 0
src/sentry/runner/commands/devserver.py

@@ -53,6 +53,9 @@ def devserver(reload, watchers, workers, experimental_spa, styleguide, prefix, e
     import os
 
     os.environ["SENTRY_ENVIRONMENT"] = environment
+    # NODE_ENV *must* use production for any prod-like environment as third party libraries look
+    # for this magic constant
+    os.environ["NODE_ENV"] = 'production' if environment.startswith('prod') else environment
 
     from django.conf import settings
     from sentry import options
@@ -122,6 +125,7 @@ def devserver(reload, watchers, workers, experimental_spa, styleguide, prefix, e
 
         uwsgi_overrides["protocol"] = "http"
 
+        os.environ["FORCE_WEBPACK_DEV_SERVER"] = "1"
         os.environ["SENTRY_WEBPACK_PROXY_PORT"] = "%s" % proxy_port
         os.environ["SENTRY_BACKEND_PORT"] = "%s" % port
 

+ 2 - 1
webpack.config.js

@@ -31,6 +31,7 @@ const SENTRY_WEBPACK_PROXY_PORT = env.SENTRY_WEBPACK_PROXY_PORT;
 const USE_HOT_MODULE_RELOAD =
   !IS_PRODUCTION && SENTRY_BACKEND_PORT && SENTRY_WEBPACK_PROXY_PORT;
 const NO_DEV_SERVER = env.NO_DEV_SERVER;
+const FORCE_WEBPACK_DEV_SERVER = env.FORCE_WEBPACK_DEV_SERVER;
 const IS_CI = !!env.CI || !!env.TRAVIS;
 
 // Deploy previews are built using netlify. We can check if we're in netlifys
@@ -397,7 +398,7 @@ if (!IS_PRODUCTION) {
 }
 
 // Dev only! Hot module reloading
-if (USE_HOT_MODULE_RELOAD && !NO_DEV_SERVER) {
+if (FORCE_WEBPACK_DEV_SERVER || (USE_HOT_MODULE_RELOAD && !NO_DEV_SERVER)) {
   const backendAddress = `http://localhost:${SENTRY_BACKEND_PORT}/`;
 
   appConfig.plugins.push(new webpack.HotModuleReplacementPlugin());