node-hook

Run source transform function on Node require

Usage no npm install needed!

<script type="module">
  import nodeHook from 'https://cdn.skypack.dev/node-hook';
</script>

README

node-hook

Run source transform function on Node require

NPM

Build status dependencies devdependencies semantic-release

Install and use

npm install --save node-hook

Before loading desired .js files, install hook

var hook = require('node-hook');

function logLoadedFilename(source, filename) {
    return 'console.log("' + filename + '");\n' + source;
}
hook.hook('.js', logLoadedFilename);
require('./dummy');
// prints fulle dummy.js filename, runs dummy.js

hook.unhook('.js'); // removes your own transform

remember: Nodejs caches compiled modules, so if the transform is not working, you might need to delete the cached entry in require.cache, then call require(filename) again to force reload.

Related: Node require replacement really-need.

You can hook several transformers thanks to the code submitted by djulien

Existing transform

You can get the current transform and run any source through it. For example to see how the current source looks when loaded but before evaluated

const filename = resolve('./call-foo.js')
const transform = Module._extensions['.js']
const fakeModule = {
  _compile: source => {
    console.log('transformed code')
    console.log(source)
  }
}
transform(fakeModule, filename)

Small print

Author: Gleb Bahmutov © 2013

License: MIT - do anything with the code, but don't blame me if it does not work.

Support: if you find any problems with this module, email / tweet / open issue on Github