Skip to content

Commit 33de9c8

Browse files
committed
fix(upgrade): handle unsupported dedupe
1 parent 292b63a commit 33de9c8

3 files changed

Lines changed: 36 additions & 7 deletions

File tree

‎packages/nuxt-cli/src/commands/upgrade.ts‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -363,8 +363,14 @@ export default defineCommand({
363363
catch{
364364
// Use default buildDir (.nuxt)
365365
}
366-
awaitcleanupNuxtDirs(cwd,buildDir,{silent: true})
367-
cleanupSpinner.stop('Build directories cleaned')
366+
try{
367+
awaitcleanupNuxtDirs(cwd,buildDir,{silent: true})
368+
cleanupSpinner.stop('Build directories cleaned')
369+
}
370+
catch(err){
371+
cleanupSpinner.stop('Could not clean build directories')
372+
logger.warn(`Nuxt was upgraded but build directories could not be removed: ${errinstanceofError ? err.message : err}`)
373+
}
368374

369375
if(method==='force'){
370376
logger.info(`If you encounter any issues, revert the changes and try with ${styleText('cyan','--no-force')}`)

‎packages/nuxt-cli/src/utils/install.ts‎

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,24 @@ export async function runDedupe(options: DedupeOptions): Promise<InstallResult>
130130
returnawaitrunInstall(options)
131131
}
132132

133-
const{ exec }=awaitdedupeDependencies({
134-
cwd: options.cwd,
135-
packageManager: options.packageManager,
136-
dry: true,
137-
})
133+
letexec
134+
try{
135+
({ exec }=awaitdedupeDependencies({
136+
cwd: options.cwd,
137+
packageManager: options.packageManager,
138+
recreateLockfile: false,
139+
dry: true,
140+
}))
141+
}
142+
catch(error){
143+
return{
144+
success: false,
145+
output: '',
146+
command: '',
147+
ignoredBuilds: [],
148+
error: errorinstanceofError ? error.message : String(error),
149+
}
150+
}
138151

139152
if(!exec){
140153
return{success: true,output: '',command: '',ignoredBuilds: []}

‎packages/nuxt-cli/test/unit/utils/install.spec.ts‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,16 @@ describe('runDedupe', () => {
159159
expect(existsSync(localLockFile)).toBe(true)
160160
})
161161

162+
it('should report unsupported dedupe commands as failures',async()=>{
163+
constresult=awaitrunDedupe({
164+
cwd: process.cwd(),
165+
packageManager: {name: 'bun',command: 'bun'},
166+
})
167+
168+
expect(result.success).toBe(false)
169+
expect(result.error).toBe('Deduplication is not supported for bun')
170+
})
171+
162172
it('should report a missing package manager instead of throwing',async()=>{
163173
constresult=awaitrunDedupe({
164174
cwd: process.cwd(),

0 commit comments

Comments
 (0)