Skip to content

Commit 6ee4a76

Browse files
authored
feat: allow for showing npx instead of npm install (#342)
1 parent 450a1c0 commit 6ee4a76

File tree

4 files changed

+44
-7
lines changed

4 files changed

+44
-7
lines changed

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,22 @@ Without `--compact`:
143143
npm i https://pkg.pr.new/tinylibs/tinybench/tinybench@a832a55
144144
```
145145

146+
For CLI applications you might want to show `npx` instead of `npm i` for the preview command. This can be accomplished with the `--bin` flag:
147+
148+
```sh
149+
npx pkg-pr-new publish --bin
150+
```
151+
152+
With `--bin`:
153+
```sh
154+
npx https://pkg.pr.new/pkg-pr-new@a832a55
155+
```
156+
157+
Without `--bin`:
158+
```sh
159+
npm i https://pkg.pr.new/pkg-pr-new@a832a55
160+
```
161+
146162
You can control publishing comments with `--comment`:
147163

148164
```sh

packages/backend/server/routes/publish.post.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ export default eventHandler(async (event) => {
1414
"sb-shasums": shasumsHeader,
1515
"sb-comment": commentHeader,
1616
"sb-compact": compactHeader,
17+
"sb-bin": binHeader,
1718
"sb-package-manager": packageManagerHeader,
1819
"sb-only-templates": onlyTemplatesHeader,
1920
} = getHeaders(event);
2021
const compact = compactHeader === "true";
2122
const onlyTemplates = onlyTemplatesHeader === "true";
2223
const comment: Comment = (commentHeader ?? "update") as Comment;
24+
const bin = binHeader === "true";
2325
const packageManager: PackageManager =
2426
(packageManagerHeader as PackageManager) || "npm";
2527

@@ -205,6 +207,7 @@ export default eventHandler(async (event) => {
205207
workflowData,
206208
compact,
207209
packageManager,
210+
bin
208211
),
209212
},
210213
conclusion: "success",
@@ -261,6 +264,7 @@ export default eventHandler(async (event) => {
261264
checkRunUrl,
262265
packageManager,
263266
"ref",
267+
bin
264268
),
265269
},
266270
);
@@ -281,6 +285,7 @@ export default eventHandler(async (event) => {
281285
checkRunUrl,
282286
packageManager,
283287
comment === "update" ? "ref" : "sha",
288+
bin
284289
),
285290
},
286291
);

packages/backend/server/utils/markdown.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
import { abbreviateCommitHash, PackageManager } from "@pkg-pr-new/utils";
22
import { WorkflowData } from "../types";
33

4-
const packageCommands: Record<PackageManager, string> = {
5-
npm: "i",
6-
pnpm: "add",
7-
yarn: "add",
8-
bun: "add",
4+
const installCommands: Record<PackageManager, string> = {
5+
npm: "npm i",
6+
pnpm: "pnpm add",
7+
yarn: "yarn add",
8+
bun: "bun add",
9+
};
10+
11+
const binCommands: Record<PackageManager, string> = {
12+
npm: "npx",
13+
pnpm: "pnpm dlx",
14+
yarn: "npx",
15+
bun: "bunx",
916
};
1017

1118
export function generateCommitPublishMessage(
@@ -15,6 +22,7 @@ export function generateCommitPublishMessage(
1522
workflowData: WorkflowData,
1623
compact: boolean,
1724
packageManager: PackageManager,
25+
bin: boolean,
1826
) {
1927
const isMoreThanFour = packages.length > 4;
2028
const shaMessages = packages
@@ -33,7 +41,7 @@ export function generateCommitPublishMessage(
3341

3442
return `
3543
\`\`\`
36-
${packageManager} ${packageCommands[packageManager]} ${shaUrl}
44+
${bin ? binCommands[packageManager] : installCommands[packageManager]} ${shaUrl}
3745
\`\`\`
3846
`;
3947
})
@@ -63,6 +71,7 @@ export function generatePullRequestPublishMessage(
6371
checkRunUrl: string,
6472
packageManager: PackageManager,
6573
base: "sha" | "ref",
74+
bin: boolean,
6675
) {
6776
const isMoreThanFour = packages.length > 4;
6877
const refMessages = packages
@@ -81,7 +90,7 @@ export function generatePullRequestPublishMessage(
8190

8291
return `
8392
\`\`\`
84-
${packageManager} ${packageCommands[packageManager]} ${refUrl}
93+
${bin ? binCommands[packageManager] : installCommands[packageManager]} ${refUrl}
8594
\`\`\`
8695
`;
8796
})

packages/cli/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ const main = defineCommand({
9595
enum: ["npm", "bun", "pnpm", "yarn"],
9696
default: "npm",
9797
},
98+
bin: {
99+
type: "boolean",
100+
description:
101+
"Set to true if your package is a binary application and you would like to show an execute command instead of an install command.",
102+
},
98103
},
99104
run: async ({ args }) => {
100105
const paths =
@@ -126,6 +131,7 @@ const main = defineCommand({
126131
const isPeerDepsEnabled = !!args.peerDeps;
127132
const isOnlyTemplates = !!args["only-templates"];
128133

134+
const isBinaryApplication = !!args.binaryApplication;
129135
const comment: Comment = args.comment as Comment;
130136
const selectedPackageManager = args.packageManager as
131137
| "npm"
@@ -485,6 +491,7 @@ const main = defineCommand({
485491
"sb-key": key,
486492
"sb-shasums": JSON.stringify(shasums),
487493
"sb-run-id": GITHUB_RUN_ID,
494+
"sb-bin": `${isBinaryApplication}`,
488495
"sb-package-manager": selectedPackageManager,
489496
"sb-only-templates": `${isOnlyTemplates}`,
490497
},

0 commit comments

Comments
 (0)