3 var yaml = require('js-yaml');
4 var parseJson = require('parse-json');
5 var requireFromString = require('require-from-string');
6 var readFile = require('./readFile');
8 module.exports = function (filepath, options) {
9 return readFile(filepath, { throwNotFound: true }).then(function (content) {
10 var parsedConfig = (function () {
11 switch (options.format) {
13 return parseJson(content, filepath);
15 return yaml.safeLoad(content, {
19 return requireFromString(content, filepath);
21 return tryAllParsing(content, filepath);
27 'Failed to parse "' + filepath + '" as JSON, JS, or YAML.'
38 function tryAllParsing(content, filepath) {
39 return tryYaml(content, filepath, function () {
40 return tryRequire(content, filepath, function () {
46 function tryYaml(content, filepath, cb) {
48 var result = yaml.safeLoad(content, {
51 if (typeof result === 'string') {
60 function tryRequire(content, filepath, cb) {
62 return requireFromString(content, filepath);