From cac18e591c95bcd13f4d25f95678dcecfac53337 Mon Sep 17 00:00:00 2001 From: James Date: Thu, 10 Jan 2019 19:32:39 -0700 Subject: [PATCH] Be able to "install" dynamically generated code --- install.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/install.js b/install.js index c962a87..0712ac2 100644 --- a/install.js +++ b/install.js @@ -243,6 +243,14 @@ makeInstaller = function (options) { require.extensions = fileGetExtensions(file).slice(0); + require.addFiles = function (id, tree) { + id || (id = '../imports/') + var f = fileResolveGet(file,id); + fileMergeContents(f, tree); + } + + require.filesByModuleId = filesByModuleId; + require.resolve = function resolve(id) { return module.resolve(id); }; @@ -463,6 +471,23 @@ makeInstaller = function (options) { parentModule.childrenById[childModule.id] = childModule; } } + function fileResolveGet(file, id) { + var extensions = fileGetExtensions(file); + + file = + // Absolute module identifiers (i.e. those that begin with a `/` + // character) are interpreted relative to the root directory, which + // is a slight deviation from Node, which has access to the entire + // file system. + id.charAt(0) === "/" ? fileAppendId(root, id, extensions) : + // Relative module identifiers are interpreted relative to the + // current file, naturally. + id.charAt(0) === "." ? fileAppendId(file, id, extensions) : + // Top-level module identifiers are interpreted as referring to + // packages in `node_modules` directories. + nodeModulesLookup(file, id, extensions); + return file; + } function fileResolve(file, id, parentModule, seenDirFiles) { var parentModule = parentModule || file.module;