From 1c3b4aa41088a9167646143f5116a02af0b8d409 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Tue, 3 Nov 2015 19:13:46 +0000 Subject: [PATCH] add npm check to babel-doctor --- packages/babel-cli/package.json | 1 + packages/babel-cli/src/babel-doctor/index.js | 4 +++- packages/babel-cli/src/babel-doctor/rules/index.js | 1 + packages/babel-cli/src/babel-doctor/rules/npm-3.js | 14 ++++++++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 packages/babel-cli/src/babel-doctor/rules/npm-3.js diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json index ae3648dae5..2ba72be33c 100644 --- a/packages/babel-cli/package.json +++ b/packages/babel-cli/package.json @@ -11,6 +11,7 @@ "babel-core": "^6.0.15", "babel-polyfill": "^6.0.14", "babel-runtime": "^5.0.0", + "bin-version-check": "^2.1.0", "chalk": "1.1.1", "chokidar": "^1.0.0", "commander": "^2.8.1", diff --git a/packages/babel-cli/src/babel-doctor/index.js b/packages/babel-cli/src/babel-doctor/index.js index 5d3729de7f..3bf118d240 100644 --- a/packages/babel-cli/src/babel-doctor/index.js +++ b/packages/babel-cli/src/babel-doctor/index.js @@ -42,11 +42,13 @@ while (nodeModulesDirectories.length) { if (packageName[0] === ".") continue; let packageLoc = path.join(loc, packageName); + let packageJsonLoc = path.join(packageLoc, "package.json"); + if (!fs.existsSync(packageJsonLoc)) continue; packages.push({ name: packageName, loc: packageLoc, - version: require(path.join(packageLoc, "package.json")).version + version: require(packageJsonLoc).version }); nodeModulesDirectories.push(path.join(packageLoc, "node_modules")); diff --git a/packages/babel-cli/src/babel-doctor/rules/index.js b/packages/babel-cli/src/babel-doctor/rules/index.js index 52ee06abb7..48e3754718 100644 --- a/packages/babel-cli/src/babel-doctor/rules/index.js +++ b/packages/babel-cli/src/babel-doctor/rules/index.js @@ -1,3 +1,4 @@ export { default as hasConfig } from "./has-config"; export { default as deduped } from "./deduped"; export { default as latestPackages } from "./latest-packages"; +export { default as npm } from "./npm-3"; diff --git a/packages/babel-cli/src/babel-doctor/rules/npm-3.js b/packages/babel-cli/src/babel-doctor/rules/npm-3.js new file mode 100644 index 0000000000..938b23d20d --- /dev/null +++ b/packages/babel-cli/src/babel-doctor/rules/npm-3.js @@ -0,0 +1,14 @@ +import binVersionCheck from "bin-version-check"; +import chalk from "chalk"; + +export default function () { + return new Promise(function (resolve) { + binVersionCheck("npm", ">=3.3.0", function (err) { + if (err) { + resolve([false, `Your npm version is outdated. Upgrade to the latest version by running:\n$ ${chalk.magenta("npm install -g npm")}`]); + } else { + resolve([true, "You're on npm >=3.3.0"]); + } + }); + }); +}