2024-12-13 10:48:12 -07:00

48 lines
1.3 KiB
JavaScript

var fs = require("fs");
var Module = require("module").Module;
var nodePath = require("path");
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");
try {
var markoInstalledDir = nodePath.dirname(require.resolve("marko"));
if (fs.existsSync(markoInstalledDir)) {
fs.renameSync(
markoInstalledDir,
markoInstalledDir.replace("node_modules/marko", "node_modules/~marko"),
);
}
} catch (e) {
// ignore error
}
Module._resolveFilename = function (request, parent, isMain) {
if (request.charAt(0) !== "." && parent?.filename.startsWith(rootDir)) {
if (
request === "marko/components" ||
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 !== "marko/package.json" &&
request.startsWith("marko/")
) {
request = nodePath.join(markoDir, request.substring("marko/".length));
}
}
return oldResolveFilename.call(this, request, parent, isMain);
};