UNPKG

@elora-cloud/elora-cli

Version:
74 lines (68 loc) 2.74 kB
'use strict'; var path = require('node:path'); var process = require('node:process'); var filterWorkspacePackages = require('@pnpm/filter-workspace-packages'); var findWorkspaceDir = require('@pnpm/find-workspace-dir'); var fse = require('fs-extra'); var constant = require('./constant.cjs'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; } var process__default = /*#__PURE__*/_interopDefaultCompat(process); var fse__default = /*#__PURE__*/_interopDefaultCompat(fse); async function findGitRoot(startPath) { let currentPath = startPath; while (currentPath !== path.parse(currentPath).root) { if (await fse__default.default.pathExists(path.join(currentPath, '.git'))) { return currentPath; } currentPath = path.dirname(currentPath); } return null; } function isMonorepo() { return process__default.default.env.ELORA_CLI_IS_MONOREPO === 'monorepo'; } function getMonorepoDir() { return process__default.default.env.ELORA_CLI_IS_MONOREPO_DIR; } // 判断当前是不是一个monorepo的项目 async function isMonorepoProject() { const pnpmWorkspacePkgs = await findWorkspaceDir.findWorkspaceDir(constant.CWD); // git的目录要和pnpm的目录一致 if (pnpmWorkspacePkgs && pnpmWorkspacePkgs === (await findGitRoot(constant.CWD))) { process__default.default.env.ELORA_CLI_IS_MONOREPO = 'monorepo'; process__default.default.env.ELORA_CLI_IS_MONOREPO_DIR = pnpmWorkspacePkgs; } return !!pnpmWorkspacePkgs; } async function filterMonorepoPkg(filter) { if (isMonorepo()) { // 判断哪些是需要忽略的哪些是需要包含的 const pkgSelectors = []; if (filter) { pkgSelectors.push({ filter, followProdDepsOnly: true, }); } const { selectedProjectsGraph } = await filterWorkspacePackages.filterPackagesFromDir(getMonorepoDir() || constant.CWD, pkgSelectors, {}); // 转为数组 return Object.entries(selectedProjectsGraph).map(v => ({ dir: v[1].package.rootDir, name: v[1].package.manifest.name, version: v[1].package.manifest.version, })); } return false; } function setPublishRegistry(r) { process__default.default.env.ELORA_CLI_PUBLISH_REGISTRY = r; } function setPublishTag(t) { process__default.default.env.ELORA_CLI_PUBLISH_TAG = t; } exports.filterMonorepoPkg = filterMonorepoPkg; exports.getMonorepoDir = getMonorepoDir; exports.isMonorepo = isMonorepo; exports.isMonorepoProject = isMonorepoProject; exports.setPublishRegistry = setPublishRegistry; exports.setPublishTag = setPublishTag;