tslint.json
構成の場合:{
"defaultSeverity": "none",
"extends": [
"tslint:recommended"
],
"jsRules": {},
"rules": {
"no-internal-module": false,
"typedef-whitespace": false,
"variable-name": [
true,
"check-format",
"allow-leading-underscore"
],
"no-console": false,
"no-reference": false,
"no-namespace": false,
"max-line-length": [true, 140],
"no-bitwise": false,
"align": true,
"arrow-return-shorthand": true,
"no-magic-numbers": true
},
"rulesDirectory": []
}
先週、私のtslintは上記の構成で正常に機能していました。 今日、VSCodeを更新しましたが、TSLintは、互換性のあるバージョンのTypescriptがインストールされていないと文句を言い始めました。 これを修正するために、TSLintバージョンエラーを修正するnpm install -g typescript
を実行しました。
VSCodeのTSLint拡張機能は、警告No valid rules have been specified
を出し、何もリントしません。
CLIからtslint --project build
を実行しようとしましたが、同じエラーが発生します。
tslintがグローバル構成ファイルを探しているのではないかと思いましたが、ローカルtslint.jsonに構文エラーを追加すると、別のエラーUnexpected token f
が発生するため、ローカル構成を調べているようです。しかし、それからどういうわけか失敗します
TSLintは、以前と同じようにプロジェクトを実行する必要があります
同じ問題があります〜 5.8.0
から5.9.1
になります〜。
tslint --config tslint.json --project tsconfig.json
を実行すると、同じNo valid rules have been specified
エラーが発生します。
tslint.json
:
{
"extends": ["tslint-config-prettier", "tslint-react"],
"rules": {
"ban": false,
"class-name": true,
"comment-format": [
true,
"check-space"
],
"curly": true,
"eofline": false,
"forin": true,
"interface-name": [true, "never-prefix"],
"jsdoc-format": true,
"jsx-no-lambda": false,
"jsx-no-multiline-js": false,
"label-position": true,
"no-any": false,
"no-arg": true,
"no-bitwise": true,
"no-console": [
false,
"log",
"error",
"debug",
"info",
"time",
"timeEnd",
"trace"
],
"no-construct": true,
"no-debugger": true,
"no-duplicate-variable": true,
"no-empty": true,
"no-eval": true,
"no-shadowed-variable": true,
"no-string-literal": true,
"no-switch-case-fall-through": true,
"no-trailing-whitespace": false,
"no-unused-variable": true,
"no-unused-expression": true,
"no-use-before-declare": true,
"radix": true,
"switch-default": true,
"trailing-comma": [false],
"triple-equals": [ true, "allow-null-check" ],
"typedef": [
true,
"parameter",
"property-declaration"
],
"variable-name": [true, "ban-keywords", "check-format", "allow-leading-underscore", "allow-pascal-case"]
}
}
私は可能な解決策を見つけました:
tsconfig.json
"allowJs": true
の設定を使用している場合、 tslint.json
rules
とjsRules
を検索しようとします。
jsRules
が空の場合、文句を言います。 IMOメッセージは、実際に解析しているルールを示す必要があります。
jsRules
内にルールを追加すると、メッセージが消えました。
"jsRules": {
"no-empty": true
}
追加してみました:
"allowJs": true,
"jsRules": {
"no-empty": true
}
私のtslint.jsonに、しかし残念ながらメッセージは残り、それはまだ何も糸くずが出ていないようです
あなたはあなたの出力で何を得ますか? エラーがない場合は、正常に機能しているはずです。
同じ出力/警告が表示されますが、変更しても何も起こりません😢
@nattyxd tsconfig
またはtslint.json
にjsRules
を追加しましたか? allowJs
はtsconfigにあります。 allowJs
を使用すると、 tslint.json
はjsRules
を期待します(したがってバグ)。 回避策は、 "jsRules": { "no-empty": true }
をtslint.json
に追加して、ルールがあり、文句を言わないようにすることです。 これは私が思うに何の影響も与えないはずです。 それはほんの少しの煩わしさです。
@ajcrites絶対に正しい。 この問題は解決されるべきだと思います。
解決されたようですので、この問題を解決します。
数ヶ月前にこの問題が発生し、このスレッドで説明されている解決策によって解決され、しばらくの間はすべて問題ありませんでしたが、最近、 "no-empty": true
がありますが、この問題が再び発生し始めました。 頭を叩いて、何が問題なのか理解できません。
tslint.jsonからすべてを削除し、以下を追加して、機能しているようです
{{
"extends": "@ microsoft / sp-tslint-rules / base-tslint.json"、
「ルール」:{
「クラス名」:false、
"export-name":false、
「forin」:false、
「ラベル位置」:false、
「メンバーアクセス」:true、
"no-arg":false、
「コンソールなし」:false、
「構築なし」:false、
「重複変数なし」:true、
「評価なし」:false、
「関数式なし」:true、
「no-internal-module」:true、
「影のない変数」:true、
「no-switch-case-fall-through」:true、
「不要なセミコロンなし」:true、
「未使用の式」:true、
"no-use-before-declare":true、
「ステートメントなし」:true、
「セミコロン」:true、
「trailing-comma」:false、
"typedef":false、
"typedef-空白":false、
"use-named-parameter":true、
「変数名」:false、
「空白」:false
}
}
TSLint linting JSファイルが必要ない場合(およびtslint> = 5.8の場合)、 tslint.json
に以下を追加するだけです。
"linterOptions": {
"exclude": [
"**/*.js"
]
}
tslint --config tslint.js
を追加するとうまくいきます。
tslint -c .eslintrc.yml -p tsconfig.jsonのように構成ファイルを指定する必要があり、jsRulesやそれらすべてのように上から必要なものは何もありません。
🤖ビープブープ! 👉TSLintは非推奨です👈そしてtypescript-eslintに切り替える必要があります! 🤖
🔒この問題は、これ以上の不必要な議論を防ぐためにロックされています。 ありがとう! 👋
最も参考になるコメント
私は可能な解決策を見つけました:
tsconfig.json
"allowJs": true
の設定を使用している場合、tslint.json
rules
とjsRules
を検索しようとします。jsRules
が空の場合、文句を言います。 IMOメッセージは、実際に解析しているルールを示す必要があります。jsRules
内にルールを追加すると、メッセージが消えました。