diff --git a/packages/cli/src/run.js b/packages/cli/src/run.js index d7c8be4929..11e49c94e9 100644 --- a/packages/cli/src/run.js +++ b/packages/cli/src/run.js @@ -1,20 +1,25 @@ import fs from 'fs' -import path from 'path' import execa from 'execa' import { name as pkgName } from '../package.json' import NuxtCommand from './command' import setup from './setup' import getCommand from './commands' -function checkDuplicateNuxt() { - const dupPkg = pkgName === '@nuxt/cli' ? 'cli-edge' : 'cli' - if (fs.existsSync(path.resolve(__dirname, '..', '..', dupPkg))) { - throw new Error('Both `nuxt` and `nuxt-edge` are installed! This is unsupported, please choose one and remove the other one from dependencies.') +function packageExists(name) { + try { + require.resolve(name) + return true + } catch (e) { + return false } } export default async function run(_argv) { - checkDuplicateNuxt() + // Check for not installing both nuxt and nuxt-edge + const dupPkg = '@nuxt/' + (pkgName === '@nuxt/cli-edge' ? 'cli' : 'cli-edge') + if (packageExists(dupPkg)) { + throw new Error('Both `nuxt` and `nuxt-edge` dependencies are installed! This is unsupported, please choose one and remove the other one from dependencies.') + } // Read from process.argv const argv = _argv ? Array.from(_argv) : process.argv.slice(2) diff --git a/packages/cli/test/unit/run-edge.test.js b/packages/cli/test/unit/run-edge.test.js index 1f0ca758a4..366f91c746 100644 --- a/packages/cli/test/unit/run-edge.test.js +++ b/packages/cli/test/unit/run-edge.test.js @@ -1,12 +1,12 @@ import run from '../../src/run' jest.mock('../../package.json', () => ({ - name: 'cli-edge' + name: '@nuxt/cli-edge' })) describe('run in edge', () => { test('throws error if nuxt and nuxt-edge are installed', async () => { await expect(run()) - .rejects.toThrow('Both `nuxt` and `nuxt-edge` are installed! This is unsupported, please choose one and remove the other one from dependencies.') + .rejects.toThrow('Both `nuxt` and `nuxt-edge` dependencies are installed! This is unsupported, please choose one and remove the other one from dependencies.') }) })