Sie könnten das sicherlich tun. Es würde erfolgreich verhindern, dass das globale require.paths
-Array geändert wird, was zur Laufzeit Probleme verursachen kann, und sollte keine Probleme mit zukünftigen Versionen haben.
Sie sollten in der Lage sein, einfach ein Modell einzurichten, das Sie einfach in Ihre aktuelle App requiren
. Laut Ihrem Beispiel sollte x.js Folgendes enthalten.
var relative = 'y/';
exports.xrequire = function(path) {
console.log("Erwarte " + relative + path);
return require(relative+path);
};
Dann können Sie erfolgreich Ihr benutzerdefiniertes require
verwenden.
var xrequire = require('x.js'),
hello = xrequire('hello.js');
Ich rate davon ab, aber wenn Sie wirklich listig sein wollen, könnten Sie die require
-Funktion überschreiben.
var require = xrequire;
Ich würde auf jeden Fall dies ausführlich in Ihrem Modul dokumentieren, wenn Sie diese Funktionalität requiren
möchten, aber es funktioniert definitiv.
BEARBEITEN:
Nun, Sie könnten überprüfen, ob die Datei vorhanden ist, und im Falle eines Fehlers zu require
zurückfallen.
var relative = 'y/';
exports.xrequire = function(path) {
var ret;
try{
ret = require(relative+path);
console.log("Erwarte " + relative + path);
}catch(e){
console.log("Erwarte " + path);
ret = require(path);
}
return ret;
};
Ich denke, Sie könnten versuchen, process.cwd
am Anfang des Dateipfads hinzuzufügen, um zu erzwingen, dass zuerst im richtigen Verzeichnis gesucht wird. Ehrlich gesagt würde dies die meisten Entwickler verwirren. Ich würde empfehlen, einfach einen Namensraum für Ihre App zu definieren und eine spezielle require-Funktion zu erstellen, die nur die speziellen Funktionen dieses namensgegebenen Apps abruft.