diff --git a/index.js b/index.js index 84ce6c2..645f2b0 100644 --- a/index.js +++ b/index.js @@ -155,20 +155,10 @@ module.exports = function(input, map) { ); var userEslintPath = userOptions.eslintPath; - var formatter = require("eslint/lib/formatters/stylish"); - - if (userEslintPath) { - try { - formatter = require(userEslintPath + "/lib/formatters/stylish"); - } catch (e) { - formatter = require("eslint/lib/formatters/stylish"); - } - } var config = assign( // loader defaults { - formatter: formatter, cacheIdentifier: JSON.stringify({ "eslint-loader": pkg.version, eslint: require(userEslintPath || "eslint").version @@ -178,6 +168,32 @@ module.exports = function(input, map) { userOptions ); + if (typeof config.formatter === "string") { + try { + config.formatter = require(config.formatter); + if ( + config.formatter && + typeof config.formatter !== "function" && + typeof config.formatter.default === "function" + ) { + config.formatter = config.formatter.default; + } + } catch (_) { + // ignored + } + } + if (config.formatter == null || typeof config.formatter !== "function") { + if (userEslintPath) { + try { + config.formatter = require(userEslintPath + "/lib/formatters/stylish"); + } catch (e) { + config.formatter = require("eslint/lib/formatters/stylish"); + } + } else { + config.formatter = require("eslint/lib/formatters/stylish"); + } + } + var cacheDirectory = config.cache; var cacheIdentifier = config.cacheIdentifier;