|
1 | 1 | #!/usr/bin/env node |
2 | 2 |
|
3 | | -const fs = require('fs') |
4 | | -const path = require('path') |
5 | | -const slash = require('slash') |
| 3 | +// Check node version before requiring/doing anything else |
| 4 | +// The user may be on a very old node version |
| 5 | + |
6 | 6 | const chalk = require('chalk') |
7 | 7 | const semver = require('semver') |
8 | | -const minimist = require('minimist') |
9 | 8 | const requiredVersion = require('../package.json').engines.node |
10 | 9 |
|
11 | | -if (!semver.satisfies(process.version, requiredVersion)) { |
12 | | - console.log(chalk.red( |
13 | | - `You are using Node ${process.version}, but this version of vue-cli ` + |
14 | | - `requires Node ${requiredVersion}.\nPlease upgrade your Node version.` |
15 | | - )) |
16 | | - process.exit(1) |
| 10 | +function checkNodeVersion (wanted, id) { |
| 11 | + if (!semver.satisfies(process.version, wanted)) { |
| 12 | + console.log(chalk.red( |
| 13 | + 'You are using Node ' + process.version + ', but this version of ' + id + |
| 14 | + 'requires Node ' + wanted + '.\nPlease upgrade your Node version.' |
| 15 | + )) |
| 16 | + process.exit(1) |
| 17 | + } |
17 | 18 | } |
18 | 19 |
|
| 20 | +checkNodeVersion(requiredVersion, 'vue-cli') |
| 21 | + |
| 22 | +const fs = require('fs') |
| 23 | +const path = require('path') |
| 24 | +const slash = require('slash') |
| 25 | +const minimist = require('minimist') |
| 26 | + |
19 | 27 | // enter debug mode when creating test repo |
20 | 28 | if ( |
21 | 29 | slash(process.cwd()).indexOf('/packages/test') > 0 && ( |
@@ -105,6 +113,7 @@ program |
105 | 113 | .option('--headless', `Don't open browser on start and output port`) |
106 | 114 | .description('start and open the vue-cli ui') |
107 | 115 | .action((cmd) => { |
| 116 | + checkNodeVersion('>=8.6', 'vue ui') |
108 | 117 | require('../lib/ui')(cleanArgs(cmd)) |
109 | 118 | }) |
110 | 119 |
|
@@ -135,17 +144,7 @@ program.on('--help', () => { |
135 | 144 | program.commands.forEach(c => c.on('--help', () => console.log())) |
136 | 145 |
|
137 | 146 | // enhance common error messages |
138 | | -const enhanceErrorMessages = (methodName, log) => { |
139 | | - program.Command.prototype[methodName] = function (...args) { |
140 | | - if (methodName === 'unknownOption' && this._allowUnknownOption) { |
141 | | - return |
142 | | - } |
143 | | - this.outputHelp() |
144 | | - console.log(` ` + chalk.red(log(...args))) |
145 | | - console.log() |
146 | | - process.exit(1) |
147 | | - } |
148 | | -} |
| 147 | +const enhanceErrorMessages = require('../lib/util/enhanceErrorMessages') |
149 | 148 |
|
150 | 149 | enhanceErrorMessages('missingArgument', argName => { |
151 | 150 | return `Missing required argument ${chalk.yellow(`<${argName}>`)}.` |
|
0 commit comments