marko/test/util/patch-module.js
2017-05-19 14:35:33 -06:00

39 lines
1.4 KiB
JavaScript

var fs = require('fs');
var nodePath = require('path');
var Module = require('module').Module;
var oldResolveFilename = Module._resolveFilename;
var isDebug = require('../../env').isDebug;
var rootDir = nodePath.join(__dirname, '../../');
var markoDir = isDebug ? nodePath.join(rootDir, 'src') : nodePath.join(rootDir, 'dist');
var markoInstalledDir = nodePath.join(rootDir, 'node_modules/marko');
if (fs.existsSync(markoInstalledDir)) {
fs.renameSync(markoInstalledDir, nodePath.join(rootDir, 'node_modules/~marko'));
}
Module._resolveFilename = function(request, parent, isMain) {
if (request.charAt(0) !== '.') {
if (request === 'marko/components' ||
request === 'marko/jquery' ||
request === 'marko/legacy-components' ||
request === 'marko/ready') {
request = nodePath.join(rootDir, request.substring('marko/'.length));
} else if (request.startsWith('marko/dist/') ||
request.startsWith('marko/src/') ||
request.startsWith('marko/helpers/')) {
request = nodePath.join(rootDir, request.substring('marko/'.length));
} else if (request === 'marko') {
request = rootDir;
} else if (request.startsWith('marko/')) {
request = nodePath.join(markoDir, request.substring('marko/'.length));
}
}
return oldResolveFilename.call(this, request, parent, isMain);
};