diff options
Diffstat (limited to 'node_modules/tslint/lib/ruleLoader.js')
-rw-r--r-- | node_modules/tslint/lib/ruleLoader.js | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/node_modules/tslint/lib/ruleLoader.js b/node_modules/tslint/lib/ruleLoader.js index acc7a3881..152f7b641 100644 --- a/node_modules/tslint/lib/ruleLoader.js +++ b/node_modules/tslint/lib/ruleLoader.js @@ -91,15 +91,29 @@ function transformName(name) { * @param ruleName - A name of a rule in filename format. ex) "someLintRule" */ function loadRule(directory, ruleName) { - var fullPath = path.join(directory, ruleName); - if (fs.existsSync(fullPath + ".js")) { - var ruleModule = require(fullPath); + var ruleFullPath = getRuleFullPath(directory, ruleName); + if (ruleFullPath !== undefined) { + var ruleModule = require(ruleFullPath); if (ruleModule !== undefined) { return ruleModule.Rule; } } return "not-found"; } +/** + * Returns the full path to a rule file. Path to rules are resolved using nodes path resolution. + * This allows developers to write custom rules in TypeScript, which then can be loaded by TS-Node. + * @param directory - An absolute path to a directory of rules + * @param ruleName - A name of a rule in filename format. ex) "someLintRule" + */ +function getRuleFullPath(directory, ruleName) { + try { + return require.resolve(path.join(directory, ruleName)); + } + catch (e) { + return undefined; + } +} function loadCachedRule(directory, ruleName, isCustomPath) { // use cached value if available var fullPath = path.join(directory, ruleName); |