Skip to content

Instantly share code, notes, and snippets.

@anechunaev
Last active November 4, 2020 13:45
Show Gist options
  • Save anechunaev/a1b4de2fe9a75d6d88d051229b6634d0 to your computer and use it in GitHub Desktop.
Save anechunaev/a1b4de2fe9a75d6d88d051229b6634d0 to your computer and use it in GitHub Desktop.
Custom require and resolve functions for Node.js (v.14)
// Run Node.js process with --require flag:
// $ node index.js -r register.js
// ...or with NODE_OPTIONS env variable:
// $ NODE_OPTIONS="-r register.js" node index.js
const style1 = require('./src/styles.less');
const style2 = require('./src/styles.less?raw');
console.log(style1, style2);
const Module = module.constructor.length > 1
? module.constructor
: BuiltinModule;
const oldResolveFilename = Module._resolveFilename
Module._resolveFilename = function customResolve(request, parentModule, isMain, options) {
let newRequest = request;
if (/\.less\?raw$/.test(request)) {
[ newRequest ] = request.split('?');
}
return oldResolveFilename.call(this, newRequest, parentModule, isMain, options)
}
const hook = function (module, file) {
return module._compile("module.exports = {};", file);
}
require.extensions['.less'] = hook;
require.extensions['.less?raw'] = hook;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment