diff --git a/src/index.js b/src/index.js index f0f9532f..e8d28535 100644 --- a/src/index.js +++ b/src/index.js @@ -353,6 +353,16 @@ export default class { return; } let files = fs.readdirSync(item); + + //must reload all bootstrap files. + //may be register adapter in bootstrap file + if (think.config('auto_reload')) { + var AutoReload = require('./util/auto_reload.js'); + //AutoReload.rewriteSysModuleLoad(); + var instance = new AutoReload(item, () => {}); + instance.clearFilesCache(files.map(file => item + '/' + file)); + } + files.forEach(file => { let extname = path.extname(file); if(extname !== '.js'){ diff --git a/src/util/auto_reload.js b/src/util/auto_reload.js index f107ad28..6ce5c8a2 100644 --- a/src/util/auto_reload.js +++ b/src/util/auto_reload.js @@ -6,6 +6,9 @@ import path from 'path'; //can not use import from let sys_module = require('module'); +//rewriteSysModuleLoad flag +let _rewriteSysModuleLoad = false; + const NODE_MODULES = `${path.sep}node_modules${path.sep}`; /** @@ -139,6 +142,12 @@ export default class extends think.base { * @return {} [] */ static rewriteSysModuleLoad(){ + + if(_rewriteSysModuleLoad){ + return; + } + _rewriteSysModuleLoad = true; + let load = sys_module._load; //rewrite Module._load method