MCPcopy Index your code
hub / github.com/npmx-dev/npmx.dev / useInstallCommand

Function useInstallCommand

app/composables/useInstallCommand.ts:7–99  ·  view source on GitHub ↗
(
  packageName: MaybeRefOrGetter<string | null>,
  requestedVersion: MaybeRefOrGetter<string | null>,
  jsrInfo: MaybeRefOrGetter<JsrPackageInfo | null>,
  typesPackageName: MaybeRefOrGetter<string | null>,
  installVersionOverride?: MaybeRefOrGetter<string | null>,
)

Source from the content-addressed store, hash-verified

5 * multiple package managers, @types packages, and JSR.
6 */
7export function useInstallCommand(
8 packageName: MaybeRefOrGetter<string | null>,
9 requestedVersion: MaybeRefOrGetter<string | null>,
10 jsrInfo: MaybeRefOrGetter<JsrPackageInfo | null>,
11 typesPackageName: MaybeRefOrGetter<string | null>,
12 installVersionOverride?: MaybeRefOrGetter<string | null>,
13) {
14 const selectedPM = useSelectedPackageManager()
15 const { settings } = useSettings()
16
17 // Check if we should show @types in install command
18 const showTypesInInstall = computed(() => {
19 return settings.value.includeTypesInInstall && !!toValue(typesPackageName)
20 })
21
22 const installCommandParts = computed(() => {
23 const name = toValue(packageName)
24 if (!name) return []
25 const version = toValue(installVersionOverride) ?? toValue(requestedVersion)
26 return getInstallCommandParts({
27 packageName: name,
28 packageManager: selectedPM.value,
29 version,
30 jsrInfo: toValue(jsrInfo),
31 })
32 })
33
34 const installCommand = computed(() => {
35 const name = toValue(packageName)
36 if (!name) return ''
37 const version = toValue(installVersionOverride) ?? toValue(requestedVersion)
38 return getInstallCommand({
39 packageName: name,
40 packageManager: selectedPM.value,
41 version,
42 jsrInfo: toValue(jsrInfo),
43 })
44 })
45
46 // Get the dev dependency flag for the selected package manager
47 const devFlag = computed(() => {
48 // bun uses lowercase -d, all others use -D
49 return selectedPM.value === 'bun' ? '-d' : '-D'
50 })
51
52 // @types install command parts (for display)
53 const typesInstallCommandParts = computed(() => {
54 const types = toValue(typesPackageName)
55 if (!types) return []
56 const pm = packageManagers.find(p => p.id === selectedPM.value)
57 if (!pm) return []
58
59 const pkgSpec = selectedPM.value === 'deno' ? `npm:${types}` : types
60
61 return [pm.label, pm.action, devFlag.value, pkgSpec]
62 })
63
64 // Full install command including @types (for copying)

Callers 1

Calls 3

useSettingsFunction · 0.85
getInstallCommandPartsFunction · 0.85
getInstallCommandFunction · 0.85

Tested by

no test coverage detected