@@ -280,20 +280,32 @@ exports.run = function (options) {
280
280
// Ensure process.env.NODE_ENV matches the build mode, with the following precedence:
281
281
// 1. Passed in build mode (if development or production)
282
282
// 2. Existing process.env.NODE_ENV (if it's valid)
283
- // 3. Default to development
284
- let nodeEnv = process . env . NODE_ENV ;
283
+ // 3. Default to development (in both cases) otherwise
284
+
285
+ // NOTE: because this code only runs when using `meteor run` or `meteor test[-packages`,
286
+ // We *don't* end up defaulting NODE_ENV in this way when bundling/deploying.
287
+ // In those cases, it will default to "production" in packages/meteor/*_env.js
288
+
289
+ // We *override* NODE_ENV if build mode is one of these values
285
290
let buildMode = runOptions . buildOptions . buildMode ;
286
291
if ( buildMode === "development" || buildMode === "production" ) {
287
292
process . env . NODE_ENV = buildMode ;
288
- } else if ( nodeEnv === "development" || nodeEnv === "production" ) {
289
- runOptions . buildOptions . buildMode = nodeEnv ;
290
- } else {
291
- runOptions . buildOptions . buildMode = "development" ;
292
- if ( ! nodeEnv ) {
293
- process . env . NODE_ENV = "development" ;
293
+ }
294
+
295
+ let nodeEnv = process . env . NODE_ENV ;
296
+ // We *never* override buildMode (it can be "test")
297
+ if ( ! buildMode ) {
298
+ if ( nodeEnv === "development" || nodeEnv === "production" ) {
299
+ runOptions . buildOptions . buildMode = nodeEnv ;
300
+ } else {
301
+ runOptions . buildOptions . buildMode = "development" ;
294
302
}
295
303
}
296
304
305
+ if ( ! nodeEnv ) {
306
+ process . env . NODE_ENV = "development" ;
307
+ }
308
+
297
309
var runner = new Runner ( runOptions ) ;
298
310
runner . start ( ) ;
299
311
var result = promise . await ( ) ;
0 commit comments