From 0878685a5a8f1916fbe95e4277d3d2d57ce7d06b Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Mon, 1 Feb 2016 17:03:13 -0800 Subject: [PATCH 1/3] Defer requiring chokidar dependency until --watch flag is passed --- packages/babel-cli/src/babel/dir.js | 3 ++- packages/babel-cli/src/babel/file.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/babel-cli/src/babel/dir.js b/packages/babel-cli/src/babel/dir.js index c2a34b7711..4e4cb11c1d 100644 --- a/packages/babel-cli/src/babel/dir.js +++ b/packages/babel-cli/src/babel/dir.js @@ -1,6 +1,5 @@ let outputFileSync = require("output-file-sync"); let pathExists = require("path-exists"); -let chokidar = require("chokidar"); let slash = require("slash"); let path = require("path"); let util = require("./util"); @@ -65,6 +64,8 @@ module.exports = function (commander, filenames) { _.each(filenames, handle); if (commander.watch) { + let chokidar = require("chokidar"); + _.each(filenames, function (dirname) { let watcher = chokidar.watch(dirname, { persistent: true, diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js index 01ec93c711..9ab05ed696 100644 --- a/packages/babel-cli/src/babel/file.js +++ b/packages/babel-cli/src/babel/file.js @@ -1,7 +1,6 @@ let convertSourceMap = require("convert-source-map"); let pathExists = require("path-exists"); let sourceMap = require("source-map"); -let chokidar = require("chokidar"); let slash = require("slash"); let path = require("path"); let util = require("./util"); @@ -133,6 +132,7 @@ module.exports = function (commander, filenames, opts) { walk(); if (commander.watch) { + let chokidar = require("chokidar"); chokidar.watch(filenames, { persistent: true, ignoreInitial: true From f81d9e1274ffeb8b558603e74d771e6f84a9b0d5 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Mon, 1 Feb 2016 17:03:37 -0800 Subject: [PATCH 2/3] Mark chokidar as optional dependency --- packages/babel-cli/package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json index 108c351cf4..20e62a05fd 100644 --- a/packages/babel-cli/package.json +++ b/packages/babel-cli/package.json @@ -13,7 +13,6 @@ "babel-runtime": "^5.0.0", "bin-version-check": "^2.1.0", "chalk": "1.1.1", - "chokidar": "^1.0.0", "commander": "^2.8.1", "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^0.1.0", @@ -28,6 +27,9 @@ "source-map": "^0.5.0", "v8flags": "^2.0.10" }, + "optionalDependencies": { + "chokidar": "^1.0.0" + }, "devDependencies": { "babel-helper-fixtures": "^6.3.13" }, From 005c4cb7a867d2c9a55309d0f43052d879fbcc48 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Mon, 1 Feb 2016 19:24:08 -0800 Subject: [PATCH 3/3] Show specific error message when chokidar can't be loaded --- packages/babel-cli/src/babel/dir.js | 2 +- packages/babel-cli/src/babel/file.js | 2 +- packages/babel-cli/src/babel/util.js | 9 +++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/babel-cli/src/babel/dir.js b/packages/babel-cli/src/babel/dir.js index 4e4cb11c1d..ebd86380b7 100644 --- a/packages/babel-cli/src/babel/dir.js +++ b/packages/babel-cli/src/babel/dir.js @@ -64,7 +64,7 @@ module.exports = function (commander, filenames) { _.each(filenames, handle); if (commander.watch) { - let chokidar = require("chokidar"); + let chokidar = util.requireChokidar(); _.each(filenames, function (dirname) { let watcher = chokidar.watch(dirname, { diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js index 9ab05ed696..26fbaf3452 100644 --- a/packages/babel-cli/src/babel/file.js +++ b/packages/babel-cli/src/babel/file.js @@ -132,7 +132,7 @@ module.exports = function (commander, filenames, opts) { walk(); if (commander.watch) { - let chokidar = require("chokidar"); + let chokidar = util.requireChokidar(); chokidar.watch(filenames, { persistent: true, ignoreInitial: true diff --git a/packages/babel-cli/src/babel/util.js b/packages/babel-cli/src/babel/util.js index 720705001a..e0d004fcb8 100644 --- a/packages/babel-cli/src/babel/util.js +++ b/packages/babel-cli/src/babel/util.js @@ -71,3 +71,12 @@ process.on("uncaughtException", function (err) { console.error(toErrorStack(err)); process.exit(1); }); + +export function requireChokidar() { + try { + return require("chokidar"); + } catch (err) { + console.error("The optional dependency chokidar failed to install and is required for --watch. Chokidar is likely not supported on your platform.") + throw err; + } +}