8000 chore: replace preferred-pm with package-manager-detector (#535) · svelte-add/svelte-add@c134afa · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Oct 20, 2024. It is now read-only.

Commit c134afa

Browse files
chore: replace preferred-pm with package-manager-detector (#535)
Co-authored-by: AdrianGonz97 <31664583+AdrianGonz97@users.noreply.github.com>
1 parent 26745a0 commit c134afa

File tree

4 files changed

+33
-30
lines changed

4 files changed

+33
-30
lines changed

.changeset/wise-ravens-exercise.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@svelte-add/core': patch
3+
'svelte-add': patch
4+
---
5+
6+
chore: replace `preferred-pm` with `package-manager-detector`

packages/core/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
"@svelte-add/clack-prompts": "workspace:*",
2121
"commander": "^12.1.0",
2222
"dedent": "^1.5.3",
23-
"picocolors": "^1.0.1",
24-
"preferred-pm": "^3.1.3"
23+
"package-manager-detector": "^0.0.1",
24+
"picocolors": "^1.0.1"
2525
},
2626
"dependencies": {
2727
"@svelte-add/ast-manipulation": "workspace:*",

packages/core/utils/dependencies.ts

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,22 @@
11
import { selectPrompt } from './prompts';
2-
import preferredPackageManager from 'preferred-pm';
2+
import { detect } from 'package-manager-detector';
3+
import { COMMANDS } from 'package-manager-detector/agents';
34
import { spinner } from '@svelte-add/clack-prompts';
45
import { executeCli } from './cli.js';
56

7+
type PackageManager = (typeof packageManagers)[number] | undefined;
8+
const packageManagers = ['npm', 'pnpm', 'yarn', 'bun'] as const;
9+
610
/**
711
* @param workingDirectory
812
* @returns the install status of dependencies
913
*/
1014
export async function suggestInstallingDependencies(
1115
workingDirectory: string,
1216
): Promise<'installed' | 'skipped'> {
13-
type PackageManager = keyof typeof packageManagers | undefined;
14-
const packageManagers = {
15-
npm: 'npm install',
16-
pnpm: 'pnpm install',
17-
yarn: 'yarn',
18-
bun: 'bun install',
19-
};
20-
21-
// Note: The return type for this is incorrect. If a PM is not found, it returns `null`.
22-
const detectedPm = await preferredPackageManager(workingDirectory);
23-
let selectedPm: PackageManager;
24-
if (!detectedPm) {
17+
const detectedPm = await detect({ cwd: workingDirectory });
18+
let selectedPm = detectedPm.agent;
19+
if (!selectedPm) {
2520
selectedPm = await selectPrompt(
2621
'Which package manager do you want to install dependencies with?',
2722
undefined,
@@ -30,27 +25,24 @@ export async function suggestInstallingDependencies(
3025
label: 'None',
3126
value: undefined,
3227
},
33-
...Object.keys(packageManagers).map((x) => {
28+
...packageManagers.map((x) => {
3429
return { label: x, value: x as PackageManager };
3530
}),
3631
],
3732
);
38-
} else {
39-
selectedPm = detectedPm.name;
4033
}
4134

42-
if (!selectedPm || !packageManagers[selectedPm]) {
35+
if (!selectedPm || !COMMANDS[selectedPm]) {
4336
return 'skipped';
4437
}
4538

46-
const selectedCommand = packageManagers[selectedPm];
47-
const args = selectedCommand.split(' ');
48-
const command = args[0];
49-
args.splice(0, 1);
50-
5139
const loadingSpinner = spinner();
5240
loadingSpinner.start('Installing dependencies...');
53-
await installDependencies(command, args, workingDirectory);
41+
42+
const installCommand = COMMANDS[selectedPm].install;
43+
const [pm, install] = installCommand.split(' ');
44+
await installDependencies(pm, [install], workingDirectory);
45+
5446
loadingSpinner.stop('Successfully installed dependencies');
5547
return 'installed';
5648
}

pnpm-lock.yaml

Lines changed: 10 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
0