Lines 48-88javascript
48 if (filters.length > 0) {
49 return filters.map((glob) => `--filter ${shellQuote(glob)}`).join(" ");
53function renderReleaseCommand(options) {
54 const selector = releaseSelector(options);
55 // Prefer --publish-flow for multi-package trains: pack-check, ordered publish,
56 // verify-with-backoff. Never teach raw `npm publish` as the happy path.
57 return selector.length > 0
58 ? `xops --publish-flow ${selector} --report`
59 : "xops --publish-flow --report";
61function renderVerifyBlock(repoRoot, allPackages) {
62 const pkgDirs = allPackages.map((pkg) => {
63 const dirRel = relDir(repoRoot, pkg.dir);
64 return dirRel === "." ? repoRoot : `${repoRoot}/${dirRel}`.replace(/\/+/g, "/");
67 `cd ${shellQuote(repoRoot)}`,
68 `for pkgdir in ${pkgDirs.map((dir) => shellQuote(dir)).join(" ")}; do`,
69 ' name=$(node -p "require(process.argv[1]).name" "$pkgdir/package.json")',
70 ' local=$(node -p "require(process.argv[1]).version" "$pkgdir/package.json")',
MediumDynamic Require
Package source references dynamic require/import behavior.
dist/scripts/renderPublishRunbook.jsView on unpkg · L68 71 ' remote=$(npm view "$name" version 2>/dev/null || echo "not found")',
72 ' echo "$name: local=$local npm=$remote $([ "$local" = "$remote" ] && echo OK || echo MISMATCH)"',
76function verifyPackageCount(allPackages) {
77 return allPackages.length;
79function renderExpectedVersions(publishPackages) {
80 if (publishPackages.length === 0) {
85 "Expected versions for packages in the publish sequence:",
87 for (const pkg of publishPackages) {
88 lines.push(`- ${pkg.name} → ${pkg.version}`);