diff options
Diffstat (limited to 'node_modules/tslint/lib/formatterLoader.js')
-rw-r--r-- | node_modules/tslint/lib/formatterLoader.js | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/node_modules/tslint/lib/formatterLoader.js b/node_modules/tslint/lib/formatterLoader.js index a117d7551..fa5c9c6f5 100644 --- a/node_modules/tslint/lib/formatterLoader.js +++ b/node_modules/tslint/lib/formatterLoader.js @@ -18,9 +18,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); var fs = require("fs"); var path = require("path"); +var resolve = require("resolve"); var utils_1 = require("./utils"); -var moduleDirectory = path.dirname(module.filename); -var CORE_FORMATTERS_DIRECTORY = path.resolve(moduleDirectory, ".", "formatters"); +var CORE_FORMATTERS_DIRECTORY = path.resolve(__dirname, "formatters"); function findFormatter(name, formattersDirectory) { if (typeof name === "function") { return name; @@ -29,7 +29,7 @@ function findFormatter(name, formattersDirectory) { name = name.trim(); var camelizedName = utils_1.camelize(name + "Formatter"); // first check for core formatters - var Formatter = loadFormatter(CORE_FORMATTERS_DIRECTORY, camelizedName); + var Formatter = loadFormatter(CORE_FORMATTERS_DIRECTORY, camelizedName, true); if (Formatter !== undefined) { return Formatter; } @@ -49,26 +49,40 @@ function findFormatter(name, formattersDirectory) { } } exports.findFormatter = findFormatter; -function loadFormatter() { - var paths = []; - for (var _i = 0; _i < arguments.length; _i++) { - paths[_i] = arguments[_i]; +function loadFormatter(directory, name, isCore) { + var formatterPath = path.resolve(path.join(directory, name)); + var fullPath; + if (isCore) { + fullPath = formatterPath + ".js"; + if (!fs.existsSync(fullPath)) { + return undefined; + } } - var formatterPath = paths.reduce(function (p, c) { return path.join(p, c); }, ""); - var fullPath = path.resolve(moduleDirectory, formatterPath); - if (fs.existsSync(fullPath + ".js")) { - var formatterModule = require(fullPath); - return formatterModule.Formatter; + else { + // Resolve using node's path resolution to allow developers to write custom formatters in TypeScript which can be loaded by TS-Node + try { + fullPath = require.resolve(formatterPath); + } + catch (_a) { + return undefined; + } } - return undefined; + return require(fullPath).Formatter; } function loadFormatterModule(name) { var src; try { - src = require.resolve(name); + // first try to find a module in the dependencies of the currently linted project + src = resolve.sync(name, { basedir: process.cwd() }); } - catch (e) { - return undefined; + catch (_a) { + try { + // if there is no local module, try relative to the installation of TSLint (might be global) + src = require.resolve(name); + } + catch (_b) { + return undefined; + } } return require(src).Formatter; } |