mirror of
https://github.com/nuxt/nuxt.git
synced 2025-03-09 03:03:18 +00:00
fix(builder): use warn only for mismatched deps (#5723)
This commit is contained in:
parent
121d481317
commit
62a593dcfd
@ -193,38 +193,20 @@ export default class Builder {
|
||||
validateTemplate() {
|
||||
// Validate template dependencies
|
||||
const templateDependencies = this.template.dependencies
|
||||
const dependencyFixes = []
|
||||
for (const depName in templateDependencies) {
|
||||
const depVersion = templateDependencies[depName]
|
||||
const requiredVersion = `${depName}@${depVersion}`
|
||||
|
||||
// Load installed version
|
||||
const pkg = this.nuxt.resolver.requireModule(path.join(depName, 'package.json'))
|
||||
if (pkg) {
|
||||
const validVersion = semver.satisfies(pkg.version, depVersion)
|
||||
if (!validVersion) {
|
||||
consola.warn(`${requiredVersion} is required but ${depName}@${pkg.version} is installed!`)
|
||||
dependencyFixes.push(requiredVersion)
|
||||
consola.warn(`${depName}@${depVersion} is recommended but ${depName}@${pkg.version} is installed!`)
|
||||
}
|
||||
} else {
|
||||
consola.warn(`${depName}@${depVersion} is required but not installed!`)
|
||||
dependencyFixes.push(requiredVersion)
|
||||
}
|
||||
}
|
||||
|
||||
// Suggest dependency fixes (TODO: automate me)
|
||||
if (dependencyFixes.length) {
|
||||
consola.error(
|
||||
'Please install missing dependencies:\n',
|
||||
'\n',
|
||||
'Using yarn:\n',
|
||||
`yarn add ${dependencyFixes.join(' ')}\n`,
|
||||
'\n',
|
||||
'Using npm:\n',
|
||||
`npm i ${dependencyFixes.join(' ')}\n`
|
||||
)
|
||||
throw new Error('Missing App Dependencies')
|
||||
}
|
||||
}
|
||||
|
||||
async generateRoutesAndFiles() {
|
||||
|
@ -263,24 +263,14 @@ describe('builder: builder build', () => {
|
||||
.mockReturnValueOnce({ version: 'alpha' })
|
||||
.mockReturnValueOnce(undefined)
|
||||
|
||||
expect(() => builder.validateTemplate()).toThrow('Missing App Dependencies')
|
||||
builder.validateTemplate()
|
||||
|
||||
expect(nuxt.resolver.requireModule).toBeCalledTimes(2)
|
||||
expect(nuxt.resolver.requireModule).nthCalledWith(1, 'join(vue, package.json)')
|
||||
expect(nuxt.resolver.requireModule).nthCalledWith(2, 'join(nuxt, package.json)')
|
||||
expect(consola.warn).toBeCalledTimes(2)
|
||||
expect(consola.warn).nthCalledWith(1, 'vue@latest is required but vue@alpha is installed!')
|
||||
expect(consola.warn).nthCalledWith(1, 'vue@latest is recommended but vue@alpha is installed!')
|
||||
expect(consola.warn).nthCalledWith(2, 'nuxt@edge is required but not installed!')
|
||||
expect(consola.error).toBeCalledTimes(1)
|
||||
expect(consola.error).toBeCalledWith(
|
||||
'Please install missing dependencies:\n',
|
||||
'\n',
|
||||
'Using yarn:\n',
|
||||
'yarn add vue@latest nuxt@edge\n',
|
||||
'\n',
|
||||
'Using npm:\n',
|
||||
'npm i vue@latest nuxt@edge\n'
|
||||
)
|
||||
expect(semver.satisfies).toBeCalledTimes(1)
|
||||
expect(semver.satisfies).nthCalledWith(1, 'alpha', 'latest')
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user