From e66109f9d03b2223436c152fc40ef52523cee1e6 Mon Sep 17 00:00:00 2001 From: Vsevolod Rodionov Date: Mon, 1 Jun 2015 11:46:25 -0700 Subject: [PATCH] Making babel able to run in node_modules directory (while still ignoring node_modules packages) In case if app is installed by npm install which is very comfortable thing (postinstall hooks, automatic package installation and so on) babel is unable to run over packages, e.g. ``` ~/node_modules/some_app$ node-babel app.js ``` is crashing as babel do not want in node_modules directory. relative path gives ability to check whether lib is in node_modules _relative_ to current app, so that if app is ran in node_modules by itself it will not be captured. --- src/babel/api/register/node.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/babel/api/register/node.js b/src/babel/api/register/node.js index 86bee9a300..6a021cb328 100644 --- a/src/babel/api/register/node.js +++ b/src/babel/api/register/node.js @@ -6,6 +6,7 @@ import * as babel from "../node"; import each from "lodash/collection/each"; import * as util from "../../util"; import fs from "fs"; +import path from "path"; sourceMapSupport.install({ handleUncaughtExceptions: false, @@ -37,6 +38,12 @@ var only; var oldHandlers = {}; var maps = {}; +var cwd = require.main ? require.main.filename : process.cwd(); + +var getRelativePath = function (filename){ + return path.relative(cwd, filename); +}; + var mtime = function (filename) { return +fs.statSync(filename).mtime; }; @@ -81,7 +88,7 @@ var compile = function (filename) { var shouldIgnore = function (filename) { if (!ignore && !only) { - return /node_modules/.test(filename); + return /node_modules/.test(getRelativePath(filename)); } else { return util.shouldIgnore(filename, ignore || [], only || []); }