Make pluginmanager delete all relative modules from cache insted

This commit is contained in:
Jiiks 2018-08-26 05:03:54 +03:00
parent 23b8e2dd76
commit 8146e0e7f2
3 changed files with 11 additions and 14 deletions

View File

@ -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 }

View File

@ -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];
}
/**

View File

@ -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() {