diff --git a/bin/nuxt b/bin/nuxt index c9d6ff3a20e5..6ee6be6fc9b1 100755 --- a/bin/nuxt +++ b/bin/nuxt @@ -1,8 +1,7 @@ #!/usr/bin/env node const { join } = require('path') -const semver = require('semver') + const consola = require('consola') -const { name, engines } = require('../package.json') // Global error handler process.on('unhandledRejection', _error => { @@ -19,14 +18,6 @@ consola.add({ } }) -if (!semver.satisfies(process.version, engines.node)) { - consola.fatal( - `The engine "node" is incompatible with ${name}. Expected version "${ - engines.node - }".` - ) -} - const defaultCommand = 'dev' const commands = new Set([defaultCommand, 'init', 'build', 'start', 'generate']) diff --git a/index.js b/index.js index 8ed6e1550f44..1cb754a108e5 100644 --- a/index.js +++ b/index.js @@ -7,9 +7,17 @@ const fs = require('fs') const path = require('path') +const semver = require('semver') -if (fs.existsSync(path.resolve(__dirname, '.babelrc'))) { +const { engines } = require('./package.json') + +if (!semver.satisfies(process.version, engines.node)) { + // Auto fallback to legacy build on older node versions + module.exports = require('./dist/nuxt-legacy.js') +} else if (fs.existsSync(path.resolve(__dirname, '.babelrc'))) { + // Use esm version when using linked repository to prevent builds module.exports = require('./lib/index.js') } else { + // Use production bundle by default module.exports = require('./dist/nuxt.js') } diff --git a/lib/nuxt-legacy.js b/lib/nuxt-legacy.js index c84cadf68454..fda35233d2de 100644 --- a/lib/nuxt-legacy.js +++ b/lib/nuxt-legacy.js @@ -1,7 +1,11 @@ import 'babel-polyfill' +import consola from 'consola' + import core from './core' import builder from './builder' import * as Utils from './common/utils' +consola.warn('You are using legacy build of Nuxt. Please consider upgrading your Node.js version to 8.x or later.') + export default Object.assign({ Utils }, core, builder)