// code snippet
com configuração tslint.json
:
{
"defaultSeverity": "error",
"extends": [
"tslint-eslint-rules"
],
"jsRules": {},
"rules": {}
}
quando eu mudo tslint.json
para
{
"defaultSeverity": "error",
"extends": "tslint-eslint-rules",
"jsRules": {},
"rules": {}
}
é show A path in an 'extends' option must be relative or rooted, but 'tslint-eslint-rules' is not
como posso obter o caminho de tslint-eslint-rules
Você está confundindo tslint.json
e tsconfig.json
Tenho certeza de que não estou confuso. Na versão 5.8.1
, está correto.
O mesmo problema aqui.
Mudado
"extends": [
"tslint:recommended"
],
para
"extends": "./node_modules/tslint/lib/configs/recommended"
Consertar.
A path in an 'extends' option must be relative or rooted, but 'xxx' is not
vem do compilador typescript se o seu tsconfig .json estiver errado. Portanto, ou você está usando -p tslint.json
ou tem conteúdo que deveria estar em tslint.json adicionado ao seu tsconfig.json.
Outro usuário confuso aqui.
Estamos chamando tslint da CLI usando
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
Isso funcionou muito bem no ano passado. Acabamos de atualizar para tslint 5.9.1 e estamos vendo o mesmo erro:
error TS5024: Compiler option 'extends' requires a value of type string.
Nosso tslint.json
tem as 2 extensões a seguir
{
"extends": [
"tslint:recommended",
"tslint-sonarts"
],
Você poderia nos dar mais informações sobre o que mudou e como podemos consertar isso novamente?
Caso seja realmente relevante, nosso 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 quais são os argumentos CLI exatos que você está usando? Eu acho que você pode estar usando a mesma configuração inválida que os outros repórteres neste tópico - a bandeira --project
deve apontar para um arquivo tsconfig.json
, não tslint.json
.
@MartijnKooij houve algumas mudanças na implementação do recurso extends
em tslint.json na v5.9 que deve ter feito inadvertidamente que sua configuração inválida parasse de funcionar. Como eu disse acima, você deve apontar --project
para um arquivo tsconfig.json. Nenhum dos documentos do TSLint jamais afirmou que --project path/to/tslint.json
é um padrão de uso compatível.
Obrigado pela explicação extra, não entendi quando @ajafff disse que tínhamos o tslint em vez do tsconfig como nosso parâmetro --project.
Meu palpite é que em algum lugar existe uma postagem de blog sobre o uso de tslint que contém esse erro.
A documentação em https://palantir.github.io/tslint/usage/cli/ sobre isso está correta, pelo menos agora está;)
Obrigado novamente, e pela completude e outros. Nós mudamos:
"lint": "tslint --project tslint.json -e src/**/*.spec.*",
nisso
"lint": "tslint --project tsconfig.json -e src/**/*.spec.*",
@ajafff @adidahiya Sinto muito, é minha culpa, muito obrigado!
mocha-tslint não está mais funcionando por causa desse problema também. E lá, configFilePath deve apontar para tslint.json. se eu usar tsconfig.json em vez disso:
const lint = require('mocha-tslint');
const configFilePath = './tsconfig.json';
lint(configFilePath);
eu obtenho este resultado:
tslint
No valid rules have been specified
Estava sempre trabalhando com 5.8
@DaveXCS Isso é provavelmente causado por mocha-tslint
fazendo algo errado. Eu acho que eles usam uma API privada (runner.ts) e usam o arquivo de configuração como argumento -c
AND -p
.
Tentei entender o problema no mocha-tslint, mas não vejo problema aqui:
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 O problema é esta linha: https://github.com/t-sauer/mocha-tslint/blob/0ba7f64be458cd74343a4149dff323d5bfd195a5/index.js#L24
Não deve passar o caminho para tslint.json
para uma função que espera o caminho para um tsconfig.json
Abri um problema para você: https://github.com/t-sauer/mocha-tslint/issues/9
Obrigado pela ajuda.
substituí o --project no cli por tsconfig.json em vez de tslint.json e reescrevi "mocha-tslint" (incluindo também a verificação de tipo):
https://gist.github.com/DaveXCS/3bd930f7093b748f551c99e80d57c578
isso é assustadoramente mal documentado, apenas confuso e nada intuitivo.
@devguyrun os documentos de uso da --project
para um arquivo tsconfig.json
várias vezes. Se você acha que poderia ser mais claro, sinta-se à vontade para enviar um PR
erro TS18001: Um caminho em uma opção 'extends' deve ser relativo ou enraizado, mas '<% = sourcedir.split (' / '). map (x =>' .. '). join (' / ')%
/tsconfig.json 'não é.
Eu tenho algum outro erro.
Comentários muito úteis
@ StanLee12 quais são os argumentos CLI exatos que você está usando? Eu acho que você pode estar usando a mesma configuração inválida que os outros repórteres neste tópico - a bandeira
--project
deve apontar para um arquivotsconfig.json
, nãotslint.json
.@MartijnKooij houve algumas mudanças na implementação do recurso
extends
em tslint.json na v5.9 que deve ter feito inadvertidamente que sua configuração inválida parasse de funcionar. Como eu disse acima, você deve apontar--project
para um arquivo tsconfig.json. Nenhum dos documentos do TSLint jamais afirmou que--project path/to/tslint.json
é um padrão de uso compatível.