MCPcopy
hub / github.com/vercel/next.js / installPackages

Function installPackages

packages/next-codemod/lib/handle-package.ts:80–117  ·  view source on GitHub ↗
(
  packageToInstall: string[],
  options: {
    packageManager?: PackageManager
    silent?: boolean
    dev?: boolean
  } = {}
)

Source from the content-addressed store, hash-verified

78}
79
80export function installPackages(
81 packageToInstall: string[],
82 options: {
83 packageManager?: PackageManager
84 silent?: boolean
85 dev?: boolean
86 } = {}
87) {
88 if (packageToInstall.length === 0) return
89
90 const {
91 packageManager = getPkgManager(process.cwd()),
92 silent = false,
93 dev = false,
94 } = options
95
96 if (!packageManager) throw new Error('Failed to find package manager')
97
98 const addCmd = ADD_CMD_FLAG[packageManager]
99 const devDepFlag = dev ? DEV_DEP_FLAG[packageManager] : undefined
100
101 const installFlags = [addCmd]
102 if (devDepFlag) {
103 installFlags.push(devDepFlag)
104 }
105 try {
106 execa.sync(packageManager, [...installFlags, ...packageToInstall], {
107 // Keeping stderr since it'll likely be relevant later when it fails.
108 stdio: silent ? ['ignore', 'ignore', 'inherit'] : 'inherit',
109 shell: true,
110 })
111 } catch (error) {
112 throw new Error(
113 `Failed to install "${packageToInstall}". Please install it manually.`,
114 { cause: error }
115 )
116 }
117}
118
119export function runInstallation(
120 packageManager: PackageManager,

Callers 2

transformerFunction · 0.90
runTransformFunction · 0.90

Calls 2

getPkgManagerFunction · 0.70
pushMethod · 0.65

Tested by

no test coverage detected