UNPKG

sync-npm-packages

Version:

Sync released npm packages to a mirror site.

50 lines (47 loc) 2.04 kB
import process from 'node:process'; import { cac } from 'cac'; import c from 'tinyrainbow'; import { g as getValidPackageNames, r as resolveConfig, b as assertSyncTarget, s as syncNpmPackages } from './shared/sync-npm-packages.B6fStU-r.mjs'; import 'node:fs/promises'; import 'node:https'; import 'tinyglobby'; import 'unconfig'; const name = "sync-npm-packages"; const version = "0.2.0"; const cli = cac(name); cli.version(version).option("--debug", "Enable debug mode").option("--cwd [cwd]", "Current working directory").option("--target [target]", "The mirror site preset").option("--ignore [ignore]", "Ignore package.json pattern").option("--include [include]", "Additional packages to sync").option("--exclude [exclude]", "Exclude packages from being synced").option("--with-optional", "With optionalDependencies in package.json").option("--no-default-ignore", "Disable default ignore patterns").option("--dry", "Dry run").help(); cli.command("").action(async (options) => { try { let printPackages = function() { console.log(c.dim("\nDetected packages to sync:")); for (const pkg of packages) { console.log(`- ${c.cyan(c.bold(pkg))}`); } console.log(); }; const resolvedConfig = await resolveConfig(options); assertSyncTarget(resolvedConfig.target); console.log(` ${c.bold(c.magenta(name))} ${c.dim(`v${version}`)}`); console.log(c.dim("--------------")); const packages = await getValidPackageNames(resolvedConfig); if (!packages.length) { console.log(c.red("No packages detected.")); return; } if (resolvedConfig.dry) { console.log(c.yellow("\nDry run, sync is skiped.")); printPackages(); return; } await syncNpmPackages(packages, resolvedConfig); console.log(c.green("Sync successfully!")); } catch (err) { console.error(c.red(String(err))); if (err instanceof Error && err.stack) { console.error(c.dim(err.stack?.split("\n").slice(1).join("\n"))); } process.exit(1); } }); cli.parse();