UNPKG

@speedy-js/mono

Version:

Monorepo development & continuous integration tooling.

66 lines 2.14 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.resolvePackages = exports.resolveLocalPackages = exports.fetchPackageVersion = void 0; /** * Module dependencies */ const fs_1 = require("fs"); const execa_1 = __importDefault(require("execa")); const path_1 = require("path"); /** * Fetch package version */ async function fetchPackageVersion(name, tag) { try { return (await (0, execa_1.default)('npm', ['view', `${name}@${tag}`, 'version'])).stdout.toString(); } catch (e) { console.log(e); return '- (1st release)'; } } exports.fetchPackageVersion = fetchPackageVersion; /** * Resolve local packages. */ function resolveLocalPackages({ cwd = process.cwd(), packagesDir, }) { if (!packagesDir) { packagesDir = (0, path_1.join)(cwd, 'packages'); } const PRIVATE_PACKAGES = ['.DS_Store']; return (0, fs_1.readdirSync)(packagesDir) .filter((n) => !PRIVATE_PACKAGES.includes(n)) .map((n) => ({ dirname: n, pkgPath: (0, path_1.join)(packagesDir, n, 'package.json'), })) .filter((p) => (0, fs_1.existsSync)(p.pkgPath)) .map((p) => { const pkg = require(p.pkgPath); return { dirname: p.dirname, name: pkg.name, pkg, }; }) .filter((p) => !p.pkg.private); } exports.resolveLocalPackages = resolveLocalPackages; /** * Retrieve packages informations */ async function resolvePackages({ cwd = process.cwd(), tag = 'latest', }) { const packagesDir = (0, path_1.join)(cwd, 'packages'); const packages = resolveLocalPackages({ cwd, packagesDir }); return Promise.all(packages.map(async (pkg) => ({ name: pkg.name, dirname: pkg.dirname, version: await fetchPackageVersion(pkg.name, tag), path: (0, path_1.join)(packagesDir, pkg.dirname), }))); } exports.resolvePackages = resolvePackages; //# sourceMappingURL=resolvePackages.js.map