@vendure/cli
Version:
A modern, headless ecommerce framework
72 lines • 2.91 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MONOREPO_PACKAGE_DIRS = void 0;
exports.detectMonorepoStructure = detectMonorepoStructure;
exports.findPackageJsonWithDependency = findPackageJsonWithDependency;
exports.findTsConfigInDir = findTsConfigInDir;
const fs_extra_1 = __importDefault(require("fs-extra"));
const node_path_1 = __importDefault(require("node:path"));
exports.MONOREPO_PACKAGE_DIRS = ['packages', 'apps', 'libs', 'services', 'modules'];
function detectMonorepoStructure(dirPath) {
const normalizedPath = node_path_1.default.normalize(dirPath);
for (const dir of exports.MONOREPO_PACKAGE_DIRS) {
const pattern = node_path_1.default.sep + dir + node_path_1.default.sep;
if (normalizedPath.includes(pattern)) {
const parts = normalizedPath.split(pattern);
return {
isMonorepo: true,
root: parts[0],
packageDir: dir,
};
}
}
return { isMonorepo: false };
}
function findPackageJsonWithDependency(rootDir, dependencyName) {
const rootPackageJsonPath = node_path_1.default.join(rootDir, 'package.json');
if (hasNamedDependency(rootPackageJsonPath, dependencyName)) {
return rootPackageJsonPath;
}
for (const dir of exports.MONOREPO_PACKAGE_DIRS) {
const monorepoDir = node_path_1.default.join(rootDir, dir);
if (fs_extra_1.default.existsSync(monorepoDir)) {
for (const subDir of fs_extra_1.default.readdirSync(monorepoDir)) {
const packageJsonPath = node_path_1.default.join(monorepoDir, subDir, 'package.json');
if (hasNamedDependency(packageJsonPath, dependencyName)) {
return packageJsonPath;
}
}
}
}
return null;
}
function hasNamedDependency(packageJsonPath, dependencyName) {
var _a;
if (!fs_extra_1.default.existsSync(packageJsonPath)) {
return false;
}
try {
const packageJson = fs_extra_1.default.readJsonSync(packageJsonPath);
return !!((_a = packageJson.dependencies) === null || _a === void 0 ? void 0 : _a[dependencyName]);
}
catch (_b) {
return false;
}
}
function findTsConfigInDir(dir) {
if (!fs_extra_1.default.existsSync(dir)) {
return null;
}
const tsConfigCandidates = fs_extra_1.default.readdirSync(dir).filter(f => /^tsconfig.*\.json$/.test(f));
if (tsConfigCandidates.includes('tsconfig.json')) {
return node_path_1.default.join(dir, 'tsconfig.json');
}
if (tsConfigCandidates.length > 0) {
return node_path_1.default.join(dir, tsConfigCandidates[0]);
}
return null;
}
//# sourceMappingURL=monorepo-utils.js.map