sync-npm-packages
Version:
Sync released npm packages to a mirror site.
50 lines (47 loc) • 2.04 kB
JavaScript
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();