From 412ffd4c0656779b247a173e5c5efe8241e6bf74 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Fri, 1 Jun 2018 16:56:13 +0430 Subject: [PATCH] feat: auto fallback to legacy build for node@6 support --- bin/nuxt | 11 +---------- index.js | 10 +++++++++- lib/nuxt-legacy.js | 4 ++++ 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/bin/nuxt b/bin/nuxt index c9d6ff3a20..6ee6be6fc9 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 8ed6e1550f..1cb754a108 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 c84cadf684..fda35233d2 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)