// code snippet
mit tslint.json
Konfiguration:
{
"defaultSeverity": "error",
"extends": [
"tslint-eslint-rules"
],
"jsRules": {},
"rules": {}
}
wenn ich tslint.json
ändere in
{
"defaultSeverity": "error",
"extends": "tslint-eslint-rules",
"jsRules": {},
"rules": {}
}
es ist Show A path in an 'extends' option must be relative or rooted, but 'tslint-eslint-rules' is not
Wie bekomme ich den Pfad von tslint-eslint-rules
Sie verwechseln tslint.json
und tsconfig.json
Ich bin sicher, dass ich nicht verwirrt bin. In Version 5.8.1
ist es richtig.
Das gleiche Problem hier.
Geändert
"extends": [
"tslint:recommended"
],
zu
"extends": "./node_modules/tslint/lib/configs/recommended"
reparieren.
A path in an 'extends' option must be relative or rooted, but 'xxx' is not
kommt vom Typoskript-Compiler, wenn Ihre tsconfig .json falsch ist. Entweder verwenden Sie -p tslint.json
oder Sie haben Inhalt, der in tslint.json enthalten sein sollte, zu Ihrer tsconfig.json hinzugefügt.
Ein weiterer verwirrter Benutzer hier.
Wir rufen tslint von der CLI aus mit . auf
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
Das hat im letzten Jahr gut funktioniert. Gerade jetzt haben wir auf tslint 5.9.1 aktualisiert und sehen den gleichen Fehler:
error TS5024: Compiler option 'extends' requires a value of type string.
Unser tslint.json
hat die folgenden 2 Erweiterungen
{
"extends": [
"tslint:recommended",
"tslint-sonarts"
],
Könnten Sie uns etwas mehr Informationen darüber geben, was sich geändert hat und wie wir dies wieder beheben können?
Falls es tatsächlich relevant ist, sieht unsere tsconfig so aus
{
"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 Was sind die genauen CLI-Argumente, die Sie verwenden? Ich denke, Sie verwenden möglicherweise das gleiche ungültige Setup wie die anderen Reporter in diesem Thread - das Flag --project
muss auf eine tsconfig.json
Datei verweisen, nicht auf tslint.json
.
@MartijnKooij es gab einige Änderungen an der Implementierung der extends
Funktion in tslint.json in v5.9, die versehentlich dazu geführt haben müssen, dass Ihr ungültiges Setup nicht mehr funktioniert. Wie ich oben sagte, müssen Sie --project
auf eine tsconfig.json-Datei zeigen. Keines der TSLint-Dokumente hat jemals behauptet, dass --project path/to/tslint.json
ein unterstütztes Nutzungsmuster ist.
Danke für die zusätzliche Erklärung, ich habe es nicht verstanden, als @ajafff sagte, wir hätten den tslint anstelle der tsconfig als unseren --project-Parameter.
Ich vermute, dass es irgendwo da draußen einen Blogbeitrag über die Verwendung von Tslint gibt, der diesen Fehler enthält.
Die Dokumentation auf https://palantir.github.io/tslint/usage/cli/ dazu ist richtig, zumindest jetzt ;)
Nochmals vielen Dank und für Vollständigkeit und andere. Wir haben uns verändert:
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
das sehr gut finden
"lint": "tslint --project tsconfig.json -e src/**/*.spec.*",
@ajafff @adidahiya Es tut mir so leid, es ist meine Schuld, vielen Dank!
mocha-tslint funktioniert wegen dieses Problems auch nicht mehr. Und dort sollte configFilePath auf tslint.json zeigen. wenn ich stattdessen tsconfig.json verwende:
const lint = require('mocha-tslint');
const configFilePath = './tsconfig.json';
lint(configFilePath);
ich bekomme dieses ergebnis:
tslint
No valid rules have been specified
Es funktionierte immer mit 5.8
@DaveXCS Das wird höchstwahrscheinlich dadurch verursacht, dass mocha-tslint
etwas falsch macht. Ich denke, sie verwenden eine private API (runner.ts) und verwenden die Konfigurationsdatei als -c
AND -p
Argument.
Ich habe versucht, das Problem in Mocha-Tslint zu verstehen, aber ich sehe hier kein wirkliches Problem:
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 Das Problem ist diese Zeile: https://github.com/t-sauer/mocha-tslint/blob/0ba7f64be458cd74343a4149dff323d5bfd195a5/index.js#L24
Es sollte den Pfad zu tslint.json
an eine Funktion übergeben, die den Pfad zu einem tsconfig.json
erwartet
Ich habe eine Ausgabe für Sie geöffnet: https://github.com/t-sauer/mocha-tslint/issues/9
Vielen Dank für Ihre Hilfe.
ich habe das --project in der cli durch tsconfig.json anstelle von tslint.json ersetzt und "mocha-tslint" umgeschrieben (auch mit Typprüfung):
https://gist.github.com/DaveXCS/3bd930f7093b748f551c99e80d57c578
das ist erschreckend schlecht dokumentiert, einfach verwirrend und überhaupt nicht intuitiv.
@devguyrun Die CLI-Verwendungsdokumentation weist Sie an, --project
mehrmals auf eine tsconfig.json
Datei zu verweisen. Wenn Sie denken, dass es klarer sein könnte, senden Sie gerne eine PR
error TS18001: Ein Pfad in einer 'extends'-Option muss relativ oder gerootet sein, aber '<%= sourcedir.split('/').map(x => '..').join('/') %
/tsconfig.json' ist es nicht.
Ich habe einen anderen Fehler.
Hilfreichster Kommentar
@StanLee12 Was sind die genauen CLI-Argumente, die Sie verwenden? Ich denke, Sie verwenden möglicherweise das gleiche ungültige Setup wie die anderen Reporter in diesem Thread - das Flag
--project
muss auf einetsconfig.json
Datei verweisen, nicht auftslint.json
.@MartijnKooij es gab einige Änderungen an der Implementierung der
extends
Funktion in tslint.json in v5.9, die versehentlich dazu geführt haben müssen, dass Ihr ungültiges Setup nicht mehr funktioniert. Wie ich oben sagte, müssen Sie--project
auf eine tsconfig.json-Datei zeigen. Keines der TSLint-Dokumente hat jemals behauptet, dass--project path/to/tslint.json
ein unterstütztes Nutzungsmuster ist.