add .babelrc - fixes #351

This commit is contained in:
Sebastian McKenzie 2015-02-25 21:49:48 +11:00
parent 12ebeed7c6
commit 7bb98352df
3 changed files with 61 additions and 10 deletions

View File

@ -1,10 +1,11 @@
var readdir = require("fs-readdir-recursive"); var resolveRc = require("../../lib/babel/api/register/resolve-rc");
var index = require("./index"); var readdir = require("fs-readdir-recursive");
var babel = require("../../lib/babel/api/node"); var index = require("./index");
var util = require("../../lib/babel/util"); var babel = require("../../lib/babel/api/node");
var path = require("path"); var util = require("../../lib/babel/util");
var fs = require("fs"); var path = require("path");
var _ = require("lodash"); var fs = require("fs");
var _ = require("lodash");
exports.readdirFilter = function (filename) { exports.readdirFilter = function (filename) {
return readdir(filename).filter(function (filename) { return readdir(filename).filter(function (filename) {
@ -41,6 +42,7 @@ exports.transform = function (filename, code, opts) {
}; };
exports.compile = function (filename, opts) { exports.compile = function (filename, opts) {
resolveRc(filename, opts);
var code = fs.readFileSync(filename, "utf8"); var code = fs.readFileSync(filename, "utf8");
return exports.transform(filename, code, opts); return exports.transform(filename, code, opts);
}; };

View File

@ -4,6 +4,7 @@ require("../../polyfill");
var sourceMapSupport = require("source-map-support"); var sourceMapSupport = require("source-map-support");
var registerCache = require("./cache"); var registerCache = require("./cache");
var resolveRc = require("./resolve-rc");
var extend = require("lodash/object/extend"); var extend = require("lodash/object/extend");
var babel = require("../node"); var babel = require("../node");
var each = require("lodash/collection/each"); var each = require("lodash/collection/each");
@ -44,7 +45,10 @@ var mtime = function (filename) {
var compile = function (filename) { var compile = function (filename) {
var result; var result;
var cacheKey = filename + ":" + JSON.stringify(transformOpts); var opts = extend({}, transformOpts);
resolveRc(filename, opts);
var cacheKey = filename + ":" + JSON.stringify(opts);
if (cache) { if (cache) {
var cached = cache[cacheKey]; var cached = cache[cacheKey];
@ -54,10 +58,10 @@ var compile = function (filename) {
} }
if (!result) { if (!result) {
result = babel.transformFileSync(filename, extend({ result = babel.transformFileSync(filename, extend(opts, {
sourceMap: true, sourceMap: true,
ast: false ast: false
}, transformOpts)); }));
} }
if (cache) { if (cache) {

View File

@ -0,0 +1,45 @@
"use strict";
var merge = require("lodash/object/merge");
var path = require("path");
var fs = require("fs");
var cache = {};
function exists(filename) {
var cached = cache[filename];
if (cached != null) return cached;
return cache[filename] = fs.existsSync(filename);;
}
module.exports = function (loc, opts) {
var rel = ".babelrc";
opts = opts || {};
function find(start, rel) {
var file = path.join(start, rel);
if (exists(file)) {
var file = fs.readFileSync(file, "utf8");
var json;
try {
json = JSON.parse(file);
} catch (err) {
err.filename = file + ": " + err.filename;
throw err;
}
opts = merge(json, opts);
}
var up = path.dirname(start);
if (up !== start) { // root
find(up, rel);
}
}
find(loc, rel);
return opts;
};