@lerna/publish
Version:
Publish packages in the current project
43 lines (42 loc) • 5.44 kB
JavaScript
const Module = require("module");
const path = require("path");
const fs = require("fs");
const originalResolveFilename = Module._resolveFilename;
const distPath = __dirname;
const manifest = [{ "module": "@lerna/commands/bootstrap/*", "pattern": "libs/commands/bootstrap/src/*" }, { "module": "@lerna/commands/changed/*", "pattern": "libs/commands/changed/src/*" }, { "module": "@lerna/commands/publish/*", "pattern": "libs/commands/publish/src/*" }, { "module": "@lerna/commands/version/*", "pattern": "libs/commands/version/src/*" }, { "module": "@lerna/commands/create/*", "pattern": "libs/commands/create/src/*" }, { "module": "@lerna/commands/import/*", "pattern": "libs/commands/import/src/*" }, { "module": "@lerna/commands/clean/*", "pattern": "libs/commands/clean/src/*" }, { "module": "@lerna/commands/diff/*", "pattern": "libs/commands/diff/src/*" }, { "module": "@lerna/commands/exec/*", "pattern": "libs/commands/exec/src/*" }, { "module": "@lerna/commands/info/*", "pattern": "libs/commands/info/src/*" }, { "module": "@lerna/commands/init/*", "pattern": "libs/commands/init/src/*" }, { "module": "@lerna/commands/link/*", "pattern": "libs/commands/link/src/*" }, { "module": "@lerna/commands/list/*", "pattern": "libs/commands/list/src/*" }, { "module": "@lerna/commands/add/*", "pattern": "libs/commands/add/src/*" }, { "module": "@lerna/commands/run/*", "pattern": "libs/commands/run/src/*" }, { "module": "@lerna/test-helpers/*", "pattern": "libs/test-helpers/*" }, { "module": "@lerna/bootstrap", "exactMatch": "packages/legacy-structure/commands/bootstrap/src/index.js", "pattern": "packages/legacy-structure/commands/bootstrap/src/index.ts" }, { "module": "@lerna/commands/add", "exactMatch": "libs/commands/add/src/index.js", "pattern": "libs/commands/add/src/index.ts" }, { "module": "@lerna/commands/bootstrap", "exactMatch": "libs/commands/bootstrap/src/index.js", "pattern": "libs/commands/bootstrap/src/index.ts" }, { "module": "@lerna/commands/changed", "exactMatch": "libs/commands/changed/src/index.js", "pattern": "libs/commands/changed/src/index.ts" }, { "module": "@lerna/commands/clean", "exactMatch": "libs/commands/clean/src/index.js", "pattern": "libs/commands/clean/src/index.ts" }, { "module": "@lerna/commands/create", "exactMatch": "libs/commands/create/src/index.js", "pattern": "libs/commands/create/src/index.ts" }, { "module": "@lerna/commands/diff", "exactMatch": "libs/commands/diff/src/index.js", "pattern": "libs/commands/diff/src/index.ts" }, { "module": "@lerna/commands/exec", "exactMatch": "libs/commands/exec/src/index.js", "pattern": "libs/commands/exec/src/index.ts" }, { "module": "@lerna/commands/import", "exactMatch": "libs/commands/import/src/index.js", "pattern": "libs/commands/import/src/index.ts" }, { "module": "@lerna/commands/info", "exactMatch": "libs/commands/info/src/index.js", "pattern": "libs/commands/info/src/index.ts" }, { "module": "@lerna/commands/init", "exactMatch": "libs/commands/init/src/index.js", "pattern": "libs/commands/init/src/index.ts" }, { "module": "@lerna/commands/link", "exactMatch": "libs/commands/link/src/index.js", "pattern": "libs/commands/link/src/index.ts" }, { "module": "@lerna/commands/list", "exactMatch": "libs/commands/list/src/index.js", "pattern": "libs/commands/list/src/index.ts" }, { "module": "@lerna/commands/publish", "exactMatch": "libs/commands/publish/src/index.js", "pattern": "libs/commands/publish/src/index.ts" }, { "module": "@lerna/commands/run", "exactMatch": "libs/commands/run/src/index.js", "pattern": "libs/commands/run/src/index.ts" }, { "module": "@lerna/commands/version", "exactMatch": "libs/commands/version/src/index.js", "pattern": "libs/commands/version/src/index.ts" }, { "module": "@lerna/core", "exactMatch": "libs/core/src/index.js", "pattern": "libs/core/src/index.ts" }, { "module": "@lerna/create", "pattern": "packages/legacy-structure/commands/create" }, { "module": "@lerna/e2e-utils", "exactMatch": "libs/e2e-utils/src/index.js", "pattern": "libs/e2e-utils/src/index.ts" }, { "module": "@lerna/nx-plugin", "exactMatch": "libs/nx-plugin/src/index.js", "pattern": "libs/nx-plugin/src/index.ts" }, { "module": "@lerna/test-helpers", "exactMatch": "libs/test-helpers/src/index.js", "pattern": "libs/test-helpers/src/index.ts" }];
Module._resolveFilename = function(request, parent) {
let found;
for (const entry of manifest) {
if (request === entry.module && entry.exactMatch) {
const entry2 = manifest.find((x) => request === x.module || request.startsWith(x.module + "/"));
const candidate = path.join(distPath, entry2.exactMatch);
if (isFile(candidate)) {
found = candidate;
break;
}
} else {
const re = new RegExp(entry.module.replace(/\*$/, "(?<rest>.*)"));
const match = request.match(re);
if (match?.groups) {
const candidate = path.join(distPath, entry.pattern.replace("*", ""), match.groups.rest + ".js");
if (isFile(candidate)) {
found = candidate;
}
}
}
}
if (found) {
const modifiedArguments = [found, ...[].slice.call(arguments, 1)];
return originalResolveFilename.apply(this, modifiedArguments);
} else {
return originalResolveFilename.apply(this, arguments);
}
};
function isFile(s) {
try {
return fs.statSync(s).isFile();
} catch (_e) {
return false;
}
}
require("./packages/legacy-structure/commands/publish/src/index.js");