marko/test/__util__/patch-module.js

50 lines
1.5 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 === "marko/env" ||
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);
};