interpret
A dictionary of file extensions and associated module loaders.
What is it
This is used by Liftoff to automatically require dependencies for configuration files, and by rechoir for registering module loaders.
API
extensions
Map file types to modules which provide a require.extensions loader.
{
'.cjsx': 'node-cjsx/register',
'.co': 'coco',
'.coffee': 'coffee-script/register',
'.coffee.md': 'coffee-script/register',
'.csv': 'require-csv',
'.iced': 'iced-coffee-script/register',
'.iced.md': 'iced-coffee-script/register',
'.ini': 'require-ini',
'.js': null,
'.json': null,
'.jsx': 'node-jsx',
'.litcoffee': 'coffee-script/register',
'.liticed': 'iced-coffee-script/register',
'.ls': 'livescript',
'.toml': 'toml-require',
'.ts': 'typescript-require',
'.xml': 'require-xml',
'.yaml': 'require-yaml',
'.yml': 'require-yaml'
}
register
Check here to see if setup is needed for the module register itself with require.extensions. If a method is returned, call it with the module.
{
'toml-require': function (module) {
module.install();
}
}
jsVariants
Extensions which are javascript variants.
{
'.cjsx': 'node-cjsx/register',
'.js': null,
'.co': 'coco',
'.coffee': 'coffee-script/register',
'.coffee.md': 'coffee-script/register',
'.iced': 'iced-coffee-script/register',
'.iced.md': 'iced-coffee-script/register',
'.jsx': 'node-jsx',
'.litcoffee': 'coffee-script/register',
'.liticed': 'iced-coffee-script/register',
'.ls': 'livescript',
'.ts': 'typescript-require'
}
Example Usage
const interpret = require('interpret');
const path = require('path');
const resolve = require('resolve');
function register(filepath, cwd) {
var ext = path.extname(filepath);
if (Object.keys(require.extensions).indexOf(ext) !== -1) {
return;
}
if (!cwd) {
cwd = path.dirname(path.resolve(filepath));
}
var moduleName = interpret.extensions[ext];
if (moduleName) {
var module = resolve.sync(moduleName, {basedir: cwd})
var compiler = require(module);
var register = interpret.register[moduleName];
if (register) {
register(compiler);
}
}
}
Note: this is more or less exactly how rechoir works.