// code snippet
con tslint.json
configuración:
{
"defaultSeverity": "error",
"extends": [
"tslint-eslint-rules"
],
"jsRules": {},
"rules": {}
}
cuando cambio tslint.json
a
{
"defaultSeverity": "error",
"extends": "tslint-eslint-rules",
"jsRules": {},
"rules": {}
}
se muestra A path in an 'extends' option must be relative or rooted, but 'tslint-eslint-rules' is not
¿Cómo puedo obtener la ruta de tslint-eslint-rules
Estás confundiendo tslint.json
y tsconfig.json
Estoy seguro de que no estoy confundido. En la versión 5.8.1
, es correcto.
El mismo problema aquí.
Cambió
"extends": [
"tslint:recommended"
],
para
"extends": "./node_modules/tslint/lib/configs/recommended"
arreglar.
A path in an 'extends' option must be relative or rooted, but 'xxx' is not
proviene del compilador mecanografiado si su tsconfig .json es incorrecto. Entonces, o está usando -p tslint.json
o tiene contenido que debería estar en tslint.json agregado a su tsconfig.json.
Otro usuario confundido aquí.
Estamos llamando a tslint desde la CLI usando
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
Esto ha funcionado bien durante el año pasado. Recientemente, actualizamos a tslint 5.9.1 y estamos viendo el mismo error:
error TS5024: Compiler option 'extends' requires a value of type string.
Nuestro tslint.json
tiene las siguientes 2 extensiones
{
"extends": [
"tslint:recommended",
"tslint-sonarts"
],
¿Podría darnos un poco más de información sobre lo que ha cambiado y cómo podemos solucionarlo de nuevo?
En caso de que sea realmente relevante, nuestro tsconfig parece
{
"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
debe apuntar a un archivo tsconfig.json
, no a tslint.json
.
@MartijnKooij hubo algunos cambios en la implementación de la función extends
en tslint.json en v5.9 que deben haber causado inadvertidamente que su configuración no válida dejara de funcionar. Como dije anteriormente, debe apuntar --project
a un archivo tsconfig.json. Ninguno de los documentos de TSLint ha afirmado nunca que --project path/to/tslint.json
sea un patrón de uso admitido.
Gracias por la explicación adicional, no la entendí cuando @ajafff dijo que teníamos tslint en lugar de tsconfig como nuestro parámetro --project.
Supongo que en algún lugar hay una publicación de blog sobre el uso de tslint que contiene este error.
La documentación en https://palantir.github.io/tslint/usage/cli/ sobre esto es correcta, al menos ahora lo es;)
Gracias de nuevo, y por la completitud y otros. Cambiamos:
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
dentro de esto
"lint": "tslint --project tsconfig.json -e src/**/*.spec.*",
@ajafff @adidahiya Lo siento mucho, es mi culpa, ¡muchas gracias!
mocha-tslint ya no funciona debido a este problema. Y allí configFilePath debería apuntar a tslint.json. si uso tsconfig.json en su lugar:
const lint = require('mocha-tslint');
const configFilePath = './tsconfig.json';
lint(configFilePath);
obtengo este resultado:
tslint
No valid rules have been specified
Siempre estuvo trabajando con 5.8
@DaveXCS Lo más probable es que esto se mocha-tslint
hizo algo mal. Supongo que usan una API privada (runner.ts) y usan el archivo de configuración como -c
AND -p
argumento.
Traté de entender el problema en mocha-tslint pero realmente no veo ningún problema aquí:
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 El problema es esta línea: https://github.com/t-sauer/mocha-tslint/blob/0ba7f64be458cd74343a4149dff323d5bfd195a5/index.js#L24
No debe pasar la ruta a tslint.json
a una función que espera la ruta a tsconfig.json
Abrí un problema para ti: https://github.com/t-sauer/mocha-tslint/issues/9
Gracias por su ayuda.
reemplacé el --project en el cli con tsconfig.json en lugar de tslint.json y reescribí "mocha-tslint" (incluida la verificación de tipos también):
https://gist.github.com/DaveXCS/3bd930f7093b748f551c99e80d57c578
esto está sorprendentemente mal documentado, simplemente confuso y nada intuitivo.
@devguyrun los documentos de uso de CLI le dicen que apunte --project
a un archivo tsconfig.json
varias veces. Si cree que podría ser más claro, no dude en enviar un PR
error TS18001: una ruta en una opción 'extiende' debe ser relativa o arraigada, pero '<% = sourcedir.split (' / '). map (x =>' .. '). join (' / ')%
/tsconfig.json 'no lo es.
Recibí algún otro error.
Comentario más útil
@ StanLee12 ¿
--project
debe apuntar a un archivotsconfig.json
, no atslint.json
.@MartijnKooij hubo algunos cambios en la implementación de la función
extends
en tslint.json en v5.9 que deben haber causado inadvertidamente que su configuración no válida dejara de funcionar. Como dije anteriormente, debe apuntar--project
a un archivo tsconfig.json. Ninguno de los documentos de TSLint ha afirmado nunca que--project path/to/tslint.json
sea un patrón de uso admitido.