@node-kit/pnpm-workspace-root
Version:
A simple utility to get the pnpm workspace root
66 lines (62 loc) • 3.08 kB
JavaScript
import { join, dirname } from 'path';
import { PnpmError } from '@pnpm/error';
import findUp from 'find-up';
import { getRealPathSync, getRealPath } from '@node-kit/extra.fs';
function asyncGeneratorStep(n, t, e, r, o, a, c) {
try {
var i = n[a](c),
u = i.value;
} catch (n) {
return void e(n);
}
i.done ? t(u) : Promise.resolve(u).then(r, o);
}
function _asyncToGenerator(n) {
return function () {
var t = this,
e = arguments;
return new Promise(function (r, o) {
var a = n.apply(t, e);
function _next(n) {
asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
}
function _throw(n) {
asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
}
_next(void 0);
});
};
}
var WORKSPACE_DIR_ENV_VAR = "NPM_CONFIG_WORKSPACE_DIR";
var WORKSPACE_MANIFEST_FILENAME = "pnpm-workspace.yaml";
function pnpmWorkspaceRoot() {
return _pnpmWorkspaceRoot.apply(this, arguments);
}
function _pnpmWorkspaceRoot() {
_pnpmWorkspaceRoot = _asyncToGenerator(function* () {
var _process$env$WORKSPAC2;
var cwd = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : process.cwd();
var workspaceManifestDirEnvVar = (_process$env$WORKSPAC2 = process.env[WORKSPACE_DIR_ENV_VAR]) !== null && _process$env$WORKSPAC2 !== void 0 ? _process$env$WORKSPAC2 : process.env[WORKSPACE_DIR_ENV_VAR.toLowerCase()];
var workspaceManifestPath = workspaceManifestDirEnvVar ? join(workspaceManifestDirEnvVar, "pnpm-workspace.yaml") : yield findUp([WORKSPACE_MANIFEST_FILENAME, "pnpm-workspace.yml"], {
cwd: yield getRealPath(cwd)
});
if (workspaceManifestPath !== null && workspaceManifestPath !== void 0 && workspaceManifestPath.endsWith(".yml")) {
throw new PnpmError("BAD_WORKSPACE_MANIFEST_NAME", 'The workspace manifest file should be named "pnpm-workspace.yaml". File found: '.concat(workspaceManifestPath));
}
return workspaceManifestPath && dirname(workspaceManifestPath) || null;
});
return _pnpmWorkspaceRoot.apply(this, arguments);
}
function pnpmWorkspaceRootSync() {
var _process$env$WORKSPAC;
var cwd = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : process.cwd();
var workspaceManifestDirEnvVar = (_process$env$WORKSPAC = process.env[WORKSPACE_DIR_ENV_VAR]) !== null && _process$env$WORKSPAC !== void 0 ? _process$env$WORKSPAC : process.env[WORKSPACE_DIR_ENV_VAR.toLowerCase()];
var workspaceManifestPath = workspaceManifestDirEnvVar ? join(workspaceManifestDirEnvVar, "pnpm-workspace.yaml") : findUp.sync([WORKSPACE_MANIFEST_FILENAME, "pnpm-workspace.yml"], {
cwd: getRealPathSync(cwd)
});
if (workspaceManifestPath !== null && workspaceManifestPath !== void 0 && workspaceManifestPath.endsWith(".yml")) {
throw new PnpmError("BAD_WORKSPACE_MANIFEST_NAME", 'The workspace manifest file should be named "pnpm-workspace.yaml". File found: '.concat(workspaceManifestPath));
}
return workspaceManifestPath && dirname(workspaceManifestPath) || null;
}
export { pnpmWorkspaceRoot, pnpmWorkspaceRootSync };