From dc5aa43e02649fe3c67595f0666b5174ff79185b Mon Sep 17 00:00:00 2001 From: Patrick Steele-Idem Date: Thu, 19 Mar 2015 12:27:52 -0600 Subject: [PATCH] Fixes #50 Ensure that all instances of marko have hot-reload and browser-refresh enabled --- browser-refresh/index.js | 4 ++++ hot-reload/index.js | 8 ++++++-- runtime/loader.js | 8 ++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/browser-refresh/index.js b/browser-refresh/index.js index 4d18aef76..800ac2206 100644 --- a/browser-refresh/index.js +++ b/browser-refresh/index.js @@ -12,6 +12,10 @@ exports.enable = function() { enabled = true; + // We set an environment variable so that _all_ marko modules + // installed in the project will have browser refresh enabled. + process.env.MARKO_BROWSER_REFRESH = 'true'; + var hotReload = require('../hot-reload'); hotReload.enable(); diff --git a/hot-reload/index.js b/hot-reload/index.js index 7068f765b..3cdfdac02 100644 --- a/hot-reload/index.js +++ b/hot-reload/index.js @@ -11,12 +11,16 @@ var modifiedFlag = 1; exports.enable = function() { - if (runtime.__browserRefresh) { + if (runtime.__hotReloadEnabled) { // Marko has already been monkey-patched. Nothing to do! return; } - runtime.__browserRefresh = true; + runtime.__hotReloadEnabled = true; + + // We set an environment variable so that _all_ marko modules + // installed in the project will have hot reload enabled. + process.env.MARKO_HOT_RELOAD = 'true'; // Patch the Template prototype to proxy all render methods... diff --git a/runtime/loader.js b/runtime/loader.js index f2c2e78eb..a78ac8575 100644 --- a/runtime/loader.js +++ b/runtime/loader.js @@ -4,6 +4,14 @@ var Module = require('module').Module; var markoCompiler = require('../compiler'); var cwd = process.cwd(); +if (process.env.hasOwnProperty('MARKO_HOT_RELOAD')) { + require('../hot-reload').enable(); +} + +if (process.env.hasOwnProperty('MARKO_BROWSER_REFRESH')) { + require('../browser-refresh').enable(); +} + function loadSource(templatePath, compiledSrc) { var templateModulePath = templatePath + '.js';