hi Isiah, i don’t feel your use-case is a valid one. i've played with many crazy hot-module loading-techniques in my 7 years as a python-dev, and afterwards, first year as js-dev. reflecting on all that time spent, what have i learned? that for anything besides contrived toy-cases, i *never* trusted the modules would hot-load correctly, with properly resolved dependencies (especially inter-module class-inheritances, which was a factor why i'm hostile to inheritance-based design-patterns in dynamics-languages). in practice i always ended up restarting the entire app/test-runner after file-updates due to paranoia, and there was alot of loader-related tech-debt i should have deleted years earlier, but didn’t due to sentimental value.
the *only* valid use-case for hot-loading modified-modules is during bootstrap-phase (with minimal integration-worries about module-dependency issues), so you can insert instrumentation-code for test-coverage like this real-world example [1]. [1] bootstrap to load modified-modules with instrumentation-code for test-coverage https://github.com/kaizhu256/node-istanbul-lite/blob/2018.4.25/lib.istanbul.js#L2765 <https://github.com/kaizhu256/node-istanbul-lite/blob/2018.4.25/lib.istanbul.js#L2765> kai zhu [email protected] > On 21 Sep 2018, at 1:33 AM, Isiah Meadows <[email protected]> wrote: > > I could seriously use the ability to remove, relative to a module, a > loaded module from the cache. > > - In my test runner, I don't want to have to append a random query > just to reload all the test files in watch mode. > - I was at one point running an experiment to try to use JS tagged > templates as a template engine of sorts, but I can't really use ES > modules because I need the ability to drop them from cache and > re-import them manually. > > I do not require any new syntax (it can just be a built-in exposed to > hosts and maybe by hosts like Node), but I would like such a hook > exposed. > > This won't require much in the spec, but it will require three main > spec changes: > > - A new per-realm specifier blacklist (like maybe realm.[[Reload]]) added. > - The third requirement in `HostResolveImportedModule` [1] altered to not > require idempotence when the specifier is in the current realm's > [[Reload]] list. > - All callees to `HostResolveImportedModule` changed to also remove > the specifier from the current realm's [[Reload]] list if the > operation completed normally. > > [1]: https://tc39.github.io/ecma262/#sec-hostresolveimportedmodule > > ----- > > Isiah Meadows > [email protected] > www.isiahmeadows.com > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

