@node-kit/lerna-workspace-root
Version:
A simple utility to get the lerna workspace root
59 lines (55 loc) • 2.41 kB
JavaScript
import { join, dirname } from 'path';
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 = "lerna.json";
function lernaWorkspaceRoot() {
return _lernaWorkspaceRoot.apply(this, arguments);
}
function _lernaWorkspaceRoot() {
_lernaWorkspaceRoot = _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, WORKSPACE_MANIFEST_FILENAME) : yield findUp(WORKSPACE_MANIFEST_FILENAME, {
cwd: yield getRealPath(cwd)
});
return workspaceManifestPath && dirname(workspaceManifestPath) || null;
});
return _lernaWorkspaceRoot.apply(this, arguments);
}
function lernaWorkspaceRootSync() {
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, WORKSPACE_MANIFEST_FILENAME) : findUp.sync(WORKSPACE_MANIFEST_FILENAME, {
cwd: getRealPathSync(cwd)
});
return workspaceManifestPath && dirname(workspaceManifestPath) || null;
}
export { lernaWorkspaceRoot, lernaWorkspaceRootSync };