1
0
mirror of https://github.com/Pomax/BezierInfo-2.git synced 2025-02-24 09:33:19 +01:00
BezierInfo-2/pages/requirehook.js
2016-01-22 17:43:40 -08:00

55 lines
1.4 KiB
JavaScript

/**
* In order to run all this code in Node.js, rather than bundling it using
* webpack, we need to hook into Node's require, so that it runs .js and
* .jsx files through our preprocessors, as well as Babel.
*
* We use Pirates for that O_O!
*/
var pirates = require("pirates");
var babel = require("babel-core");
var loaders = {
latex: require('../lib/latex-loader'),
pre: require('../lib/pre-loader'),
p: require('../lib/p-loader'),
babel: function(source) {
return babel.transform(source, {
presets: ['es2015', 'react']
}).code;
}
};
function convertJS(source, filename) {
// bug? https://github.com/ariporad/pirates/issues/15
if (!filename.match(/.js(x)$/)) return source;
source = loaders.p(source);
source = loaders.pre(source);
source = loaders.latex(source);
source = loaders.babel(source);
return source;
}
/*
function convertLESS(source, filename) {
// bug? https://github.com/ariporad/pirates/issues/15
if (!filename.match(/.less$/)) return source;
source = loaders.p(source);
source = loaders.pre(source);
source = loaders.latex(source);
source = loaders.babel(source);
return source;
}
*/
var revert = [
pirates.addHook(convertJS, { exts: ['.js'] }),
pirates.addHook(convertJS, { exts: ['.jsx'] }),
pirates.addHook(convertLESS, { exts: ['.less'] })
];
module.exports = function() {
revert.forEach(function(fn) { fn(); });
};