Tslintを4.0.2にアップグレードしたところ、次のような多くのエラーが発生しました
Could not find implementations for the following rules specified in the configuration:
directive-selector-name
component-selector-name
directive-selector-type
component-selector-type
directive-selector-prefix
component-selector-prefix
label-undefined
no-constructor-vars
no-duplicate-key
no-unreachable
use-strict
私の問題は、tslint.jsonが古くなっている可能性があり、それを更新する必要があるかもしれないと考えていますが、それを行う方法に関する情報や、仮定が正しい場合でも情報が見つかりません。
tslint.json
{
"rulesDirectory": [
"node_modules/codelyzer"
],
"rules": {
"directive-selector-name": [true, "camelCase"],
"component-selector-name": [true, "kebab-case"],
"directive-selector-type": [true, "attribute"],
"component-selector-type": [true, "element"],
"directive-selector-prefix": [true, "my"],
"component-selector-prefix": [true, "my"],
"use-input-property-decorator": true,
"use-output-property-decorator": true,
"use-Host-property-decorator": true,
"no-attribute-parameter-decorator": true,
"no-input-rename": true,
"no-output-rename": true,
"no-forward-ref" :true,
"use-life-cycle-interface": true,
"use-pipe-transform-interface": true,
"pipe-naming": [true, "camelCase", "my"],
"component-class-suffix": true,
"directive-class-suffix": true,
"ban": [true,
["_", "extend"],
["_", "isNull"],
["_", "isDefined"]
],
"class-name": true,
"comment-format": [false,
"check-space",
"check-lowercase"
],
"curly": true,
"eofline": true,
"forin": true,
"indent": [true, 2],
"interface-name": true,
"jsdoc-format": true,
"label-position": true,
"label-undefined": true,
"max-line-length": [false, 140],
"member-ordering": [true,
"public-before-private",
"static-before-instance",
"variables-before-functions"
],
"no-arg": true,
"no-bitwise": true,
"no-console": [true,
"debug",
"info",
"time",
"timeEnd",
"trace"
],
"no-construct": true,
"no-constructor-vars": false,
"no-debugger": true,
"no-duplicate-key": true,
"no-duplicate-variable": true,
"no-empty": true,
"no-eval": true,
"no-string-literal": true,
"no-switch-case-fall-through": true,
"trailing-comma": true,
"no-trailing-whitespace": true,
"no-unused-expression": true,
"no-unused-variable": true,
"no-unreachable": true,
"no-use-before-declare": true,
"no-var-requires": true,
"one-line": [true,
"check-open-brace",
"check-catch",
"check-else",
"check-whitespace"
],
"quotemark": [true, "single"],
"radix": true,
"semicolon": true,
"triple-equals": [true, "allow-null-check"],
"typedef": [true,
"callSignature",
"indexSignature",
"parameter",
"propertySignature",
"variableDeclarator"
],
"typedef-whitespace": [true,
["callSignature", "noSpace"],
["catchClause", "noSpace"],
["indexSignature", "space"]
],
"use-strict": false,
"variable-name": false,
"whitespace": [true,
"check-branch",
"check-decl",
"check-operator",
"check-separator",
"check-type"
]
}
}
packages.json
{
"dependencies": {
"@angular/common": "^2.2.4",
"@angular/compiler": "^2.2.4",
"@angular/core": "^2.2.4",
"@angular/forms": "^2.2.4",
"@angular/http": "^2.2.4",
"@angular/platform-browser": "^2.2.4",
"@angular/platform-browser-dynamic": "^2.2.4",
"@angular/router": "^3.2.4",
"@ng-bootstrap/ng-bootstrap": "^1.0.0-alpha.14",
"ag-grid": "^7.0.0",
"angularfire2": "^2.0.0-beta.5",
"core-js": "^2.4.1",
"firebase": "^3.6.2",
"rxjs": "5.0.0-rc.4",
"zone.js": "^0.7.2"
},
"devDependencies": {
"del": "^2.0.2",
"gulp": "gulpjs/gulp#4ed9a4a3275559c73a396eff7e1fde3824951ebb",
"gulp-hub": "frankwallis/gulp-hub#d461b9c700df9010d0a8694e4af1fb96d9f38bf4",
"gulp-filter": "^4.0.0",
"gulp-util": "^3.0.7",
"gulp-sass": "^2.1.1",
"browser-sync": "^2.18.2",
"browser-sync-spa": "^1.0.3",
"karma": "^1.3.0",
"karma-coverage": "^1.1.1",
"karma-jasmine": "^1.0.2",
"karma-junit-reporter": "^1.1.0",
"jasmine": "^2.4.1",
"es6-shim": "^0.35.0",
"karma-chrome-launcher": "^2.0.0",
"babel-plugin-istanbul": "^3.0.0",
"karma-webpack": "^1.7.0",
"webpack": "2.1.0-beta.20",
"html-webpack-plugin": "^2.24.1",
"style-loader": "^0.13.0",
"css-loader": "^0.26.0",
"postcss-loader": "^1.1.1",
"autoprefixer": "^6.5.3",
"json-loader": "^0.5.4",
"extract-text-webpack-plugin": "^2.0.0-beta.3",
"html-loader": "^0.4.3",
"ts-loader": "^1.2.2",
"sass-loader": "^4.0.2",
"node-sass": "^3.13.0",
"eslint": "^3.11.1",
"eslint-config-xo-space": "^0.15.0",
"eslint-loader": "^1.6.1",
"babel-loader": "^6.2.8",
"babel-eslint": "^7.1.1",
"eslint-plugin-babel": "^4.0.0",
"tslint": "^4.0.2",
"TypeScript": "^2.0.10",
"typings": "^2.0.0",
"tslint-loader": "^3.2.1",
"codelyzer": "^2.0.0-beta.1"
},
"scripts": {
"build": "gulp",
"serve": "gulp serve",
"serve:dist": "gulp serve:dist",
"test": "gulp test",
"test:auto": "gulp test:auto"
},
"eslintConfig": {
"root": true,
"env": {
"browser": true,
"jasmine": true
},
"extends": [
"xo-space/esnext"
]
}
}
私は同じ船に乗っていました。 tslintの以前のバージョンが何であったかはわかりませんが、私にとっては、3.15.1から4.0.2にアップグレードしたため、「壊れたルール」リストはあなたのものとは異なります。それでも、私はあなたと私が共通していたものにいくつかの修正/説明を提供することができます。
GitHubのtslintのchangelog に移動し、壊れたルールを見つけ、行の最後に問題番号を取得し、問題を調べました。最も簡単にナビゲートする方法は、GitHubの問題URLの最後に問題番号を追加することでした。たとえば、 label-undefined was http // github.com/palantir/tslint/issues/877
ここに私が理解しなければならなかったものがあります
"label-undefined": true
tslint.jsonから追加して"allowUnusedLabels": false
tsconfig.jsonのcompilerOptionsセクション"no-constructor-vars"
から"no-parameter-properties"
tslint.json内"no-duplicate-key": true
完全にb/c TypeScriptが処理するようになりました(dupキーの場合はコンパイルされません)。"no-unreachable": true
tslint.jsonから追加して"noImplicitReturns": true
tsconfig.jsonのcompilerOptionsセクション"use-strict"
ルールb/c TypeScriptは、すべてのモジュール本体を厳密モードで解析するようになりました。現在、codelyzer 2.0.0-beta.1にはいくつかの重大な変更があります。ディレクティブセレクター名、コンポーネントセレクター名、ディレクティブセレクタータイプ、コンポーネントセレクタータイプ、ディレクティブセレクタープレフィックス、コンポーネントセレクタープレフィックスは削除され、サポートされなくなりました。代わりに、以下のルールを追加しました。
"directive-selector": [true, "attribute", "app", "camelCase"],
"component-selector": [true, "element", "app", "kebab-case"],
Codelyzerの changelog を見て、サポートされていないルールを検索してください
tslint v4は、もはや意味をなさない一連のルールを削除し、TypeScriptチェックが改善されました。これらのルールを引き続き使用する場合は、tslint v3を使用する必要があります。
angularプロジェクトからルールをコピーした後、同じ問題が発生しました。新しい空のTypeScriptプロジェクトを作成するだけで問題ありません。
Angularプロジェクトをアップグレードした後、同じ問題が発生しました。このルールを削除すると、問題が解決しました。
"no-misused-new"
IDEのWebStorm 2016.xにCould not find implementations for the following rules...
警告が表示されるという同じ問題がありました。私の場合、WebStormをアップグレードすると問題が修正されたため、ルールの実装はIDEによって提供されました。
TypeScript、TSLint、およびCodelyzerをアップグレードしましたが、使用できません。 tslint.jsonファイルの内容を調べましたが、何も見つかりませんでした。 WebStormをアップグレードすると問題が修正されました。