// code snippet
с конфигурацией tslint.json
:
{
"defaultSeverity": "error",
"extends": [
"tslint-eslint-rules"
],
"jsRules": {},
"rules": {}
}
когда я меняю tslint.json
на
{
"defaultSeverity": "error",
"extends": "tslint-eslint-rules",
"jsRules": {},
"rules": {}
}
это шоу A path in an 'extends' option must be relative or rooted, but 'tslint-eslint-rules' is not
как я могу получить путь tslint-eslint-rules
Вы путаете tslint.json
и tsconfig.json
Я уверена, что не запуталась. В версии 5.8.1
это правильно.
Та же проблема и здесь.
Измененный
"extends": [
"tslint:recommended"
],
к
"extends": "./node_modules/tslint/lib/configs/recommended"
чинить.
A path in an 'extends' option must be relative or rooted, but 'xxx' is not
поступает из компилятора машинописного текста, если ваш -p tslint.json
либо у вас есть контент, который должен быть в tslint.json, добавленном в ваш tsconfig.json.
Еще один запутанный пользователь.
Мы вызываем tslint из интерфейса командной строки, используя
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
Это отлично сработало в прошлом году. Только что мы обновились до tslint 5.9.1 и видим ту же ошибку:
error TS5024: Compiler option 'extends' requires a value of type string.
Наш tslint.json
имеет следующие 2 расширения
{
"extends": [
"tslint:recommended",
"tslint-sonarts"
],
Не могли бы вы дать нам больше информации о том, что изменилось и как мы можем это исправить?
Если это действительно актуально, наш tsconfig выглядит так:
{
"compileOnSave": false,
"compilerOptions": {
"lib": [
"dom",
"es2015"
],
"noImplicitAny": false,
"target": "es5",
"rootDir": "src",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"sourceMap": true,
"jsx": "preserve",
"baseUrl": "src",
"types": [
"p-elements-core",
"@types/jasmine",
"@types/underscore",
"@types/requirejs",
"../../src/types"
]
}
}
@ StanLee12, какие именно аргументы интерфейса командной строки вы используете? Я думаю, вы могли использовать ту же неверную настройку, что и другие репортеры в этом потоке - флаг --project
должен указывать на файл tsconfig.json
, а не на tslint.json
.
@MartijnKooij произошли некоторые изменения в реализации функции extends
в tslint.json в v5.9, которые, должно быть, случайно привели к прекращению работы вашей недопустимой настройки. Как я сказал выше, вы должны указать --project
на файл tsconfig.json. Ни один из документов TSLint никогда не утверждал, что --project path/to/tslint.json
является поддерживаемым шаблоном использования.
Спасибо за дополнительное объяснение, я не понял, когда
Я предполагаю, что где-то там есть сообщение в блоге об использовании tslint, которое содержит эту ошибку.
Документация на https://palantir.github.io/tslint/usage/cli/ об этом верна, по крайней мере, теперь это так;)
Еще раз спасибо и за полноту и другим. Мы изменили:
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
в это
"lint": "tslint --project tsconfig.json -e src/**/*.spec.*",
@ajafff @adidahiya Мне очень жаль, это моя вина, большое спасибо!
mocha-tslint больше не работает из-за этой проблемы. И там configFilePath должен указывать на tslint.json. если вместо этого я использую tsconfig.json:
const lint = require('mocha-tslint');
const configFilePath = './tsconfig.json';
lint(configFilePath);
я получаю такой результат:
tslint
No valid rules have been specified
Всегда работал с 5.8
@DaveXCS Это, скорее всего, вызвано неправильным действием mocha-tslint
. Я предполагаю, что они используют частный API (runner.ts) и используют файл конфигурации как аргумент -c
AND -p
.
Я попытался разобраться в проблеме в mocha-tslint, но на самом деле не вижу здесь проблемы:
const tslintConfig = Configuration.loadConfigurationFromPath(configFilePath);
fileNames.forEach((file) => test(file, tslintConfig));
const TSLint = require('tslint');
const Linter = TSLint.Linter;
const Configuration = TSLint.Configuration;
fs.readFile(file, (err, sourceBuffer) => {
const linter = new Linter(options);
const source = sourceBuffer.toString();
linter.lint(file, source.toString(), config);
@DaveXCS Проблема в этой строке: https://github.com/t-sauer/mocha-tslint/blob/0ba7f64be458cd74343a4149dff323d5bfd195a5/index.js#L24
Он не должен передавать путь к tslint.json
функции, которая ожидает путь к tsconfig.json
Я открыл для вас вопрос: https://github.com/t-sauer/mocha-tslint/issues/9
Спасибо за вашу помощь.
Я заменил --project на cli на tsconfig.json вместо tslint.json и переписал «mocha-tslint» (включая проверку типов):
https://gist.github.com/DaveXCS/3bd930f7093b748f551c99e80d57c578
это ужасно плохо документировано, просто сбивает с толку и совсем не интуитивно понятно.
@devguyrun в документации по использованию интерфейса командной строки указано несколько раз указать --project
на файл tsconfig.json
. Если вы думаете, что это может быть более понятно, не стесняйтесь присылать PR
ошибка TS18001: путь в опции 'extends' должен быть относительным или корневым, но '<% = sourcedir.split (' / '). map (x =>' .. '). join (' / ')%
/tsconfig.json - нет.
У меня другая ошибка.
Самый полезный комментарий
@ StanLee12, какие именно аргументы интерфейса командной строки вы используете? Я думаю, вы могли использовать ту же неверную настройку, что и другие репортеры в этом потоке - флаг
--project
должен указывать на файлtsconfig.json
, а не наtslint.json
.@MartijnKooij произошли некоторые изменения в реализации функции
extends
в tslint.json в v5.9, которые, должно быть, случайно привели к прекращению работы вашей недопустимой настройки. Как я сказал выше, вы должны указать--project
на файл tsconfig.json. Ни один из документов TSLint никогда не утверждал, что--project path/to/tslint.json
является поддерживаемым шаблоном использования.