From 8146e0e7f23374752706f87452c40dd486516367 Mon Sep 17 00:00:00 2001 From: Jiiks Date: Sun, 26 Aug 2018 05:03:54 +0300 Subject: [PATCH] Make pluginmanager delete all relative modules from cache insted --- client/src/modules/pluginapi.js | 9 --------- client/src/modules/pluginmanager.js | 6 ++++++ tests/ext/plugins/Custom Elements Example/index.js | 10 +++++----- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/client/src/modules/pluginapi.js b/client/src/modules/pluginapi.js index 9f933102..953a0ce2 100644 --- a/client/src/modules/pluginapi.js +++ b/client/src/modules/pluginapi.js @@ -58,15 +58,6 @@ export default class PluginApi { return null; } - relativeRequire(file) { - const absolutePath = path.join(this.pluginPath, file); - delete Globals.require.cache[Globals.require.resolve(absolutePath)]; - return Globals.require(absolutePath); - } - get relative() { - return this.relativeRequire.bind(this); - } - get Api() { return this } get AsyncEventEmitter() { return AsyncEventEmitter } diff --git a/client/src/modules/pluginmanager.js b/client/src/modules/pluginmanager.js index 079a9ae1..e1c0d04b 100644 --- a/client/src/modules/pluginmanager.js +++ b/client/src/modules/pluginmanager.js @@ -130,6 +130,12 @@ export default class extends ContentManager { static unloadContentHook(content, reload) { delete Globals.require.cache[Globals.require.resolve(content.paths.mainPath)]; + const uncache = []; + for (const required in Globals.require.cache) { + if (!required.includes(content.paths.contentPath)) continue; + uncache.push(Globals.require.resolve(required)); + } + for (const u of uncache) delete Globals.require.cache[u]; } /** diff --git a/tests/ext/plugins/Custom Elements Example/index.js b/tests/ext/plugins/Custom Elements Example/index.js index 904d8982..d441bfee 100644 --- a/tests/ext/plugins/Custom Elements Example/index.js +++ b/tests/ext/plugins/Custom Elements Example/index.js @@ -2,17 +2,17 @@ * This is an example of how you should add custom elements instead of manipulating the DOM directly */ +// Import custom components +const customVueComponent = require('./components/vuecomponent'); +const customReactComponent = require('./components/reactcomponent'); + module.exports = (Plugin, Api, Vendor) => { // Destructure some apis - const { Logger, ReactComponents, Patcher, monkeyPatch, Reflection, Utils, CssUtils, VueInjector, Vuewrap, relative } = Api; + const { Logger, ReactComponents, Patcher, monkeyPatch, Reflection, Utils, CssUtils, VueInjector, Vuewrap, requireUncached } = Api; const { Vue } = Vendor; const { React } = Reflection.modules; // This should be in vendor - // Import custom components from relative paths - const customVueComponent = relative('./components/vuecomponent'); - const customReactComponent = relative('./components/reactcomponent'); - return class extends Plugin { async onStart() {