marko/test/__util__/patch-module.js
2017-11-22 16:46:18 -08:00

33 lines
1.3 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);
};