以下を実行して、tslint
からnode_modules
を除外しようとしました。しかし、それらのどれも問題を解決しませんでした。
node_modules
フォルダを呼び出す方法が原因であるかどうか混乱しています。
最初の試行-tsconfig.json
およびtsconfig-aot.json
に以下を追加しました
"exclude": [
"../node_modules/**/*",
"./node_modules/**/*",
"node_modules",
"node_modules/**/*.ts",
"**/node_modules/**/*",
"**/node_modules/**"
]
2回目の試行-.angular-cli.json
の各プロジェクトセクションにexclude
を追加しました
"lint": [{
"project": "../../../tsconfig.json",
"exclude": "./node_modules/*" // also tried **/node_modules/**/*
},
{
"project": "../../../tsconfig-aot.json",
"exclude": "./node_modules/*"
}
],
回目の試行-tslint-cli
オプション付きで--exclude
を実行
tslint --exclude node_modules --project tsconfig-aot.json
tslint --exclude node_modules --project tsconfig.json
まだ変化はありません。 yarn webpack:build
を実行しても、node_modulesからこれらの警告が引き続き表示されます。
また、tsconfig.json
とtsconfig-aot.json
には、すでに"skipLibCheck": true
が含まれています
[〜#〜]更新[〜#〜]
エラーを引き起こしていたnpmモジュールangular-select2-component
をインストールしました。 tslintスタックトレースを追加しました。
WARNING in ./node_modules/angular-select2-component/index.ts
[1, 41]: file should end with a newline
@ ./src/main/webapp/app/home/home.module.ts 13:34-70
@ ./src/main/webapp/app/app.module.ts
@ ./src/main/webapp/app/app.main.ts
WARNING in ./node_modules/angular-select2-component/src/select2.component.ts
[22, 24]: Type boolean trivially inferred from a boolean literal, remove type annotation
[43, 22]: missing whitespace
[44, 40]: missing whitespace
[46, 14]: missing whitespace
[54, 45]: missing whitespace
[67, 14]: missing whitespace
[61, 32]: missing whitespace
[79, 18]: missing whitespace
[59, 51]: " should be '
[54, 33]: == should be ===
[35, 45]: missing whitespace
[44, 11]: missing whitespace
[54, 11]: missing whitespace
[61, 15]: missing whitespace
[30, 1]: Consecutive blank lines are forbidden
[13, 15]: The selector of the component "Select2Component" should be named kebab-case and include dash (https://angular.io/styleguide#style-05-02)
@ ./node_modules/angular-select2-component/index.ts 6:9-43
@ ./src/main/webapp/app/home/home.module.ts
@ ./src/main/webapp/app/app.module.ts
@ ./src/main/webapp/app/app.main.ts
WARNING in ./node_modules/angular-select2-component/src/custom-input.ts
[59, 2]: file should end with a newline
[20, 47]: missing whitespace
@ ./node_modules/angular-select2-component/src/select2.component.ts 25:21-46
@ ./node_modules/angular-select2-component/index.ts
@ ./src/main/webapp/app/home/home.module.ts
@ ./src/main/webapp/app/app.module.ts
@ ./src/main/webapp/app/app.main.ts
チェックを開始するディレクトリを明示的に指定してください。私の終わりにそれは:
"scripts": {
"lint": "tslint \"src/**/*.ts\"",
},
このソリューションは、プロジェクトが適切に構成されている場合にのみ機能します。
package.json
some-other.conf.js
src/here_is_app_code
{
"extends": [
"tslint:recommended"
],
"linterOptions": {
"exclude": [
"node_modules"
]
}
}
詳細は this PR にあります
tslint \"./**/*.ts\" -e \"node_modules\"
-e
は--exclude
の省略形で、 this PR で始まります。
問題はあなたのtsconfigではありません。実際、デフォルトでnode_modules
を除外する必要があります。問題はangular-select2-component
モジュールです。正しく構築されていません。
ほとんどのTypeScriptモジュールは、JSファイル(プロジェクトのコンパイル済み出力)を指すpackage.json
にmain
があるように構築されています。また、ルートタイプ定義ファイルpackage.json
を指す.d.ts
にtypes
エントリがあります。
インポートするモジュール(angular-select2-component
)のmain
エントリは、TypeScriptファイルであるindex.ts
に設定されています。 types
エントリはありません。これは完全にサポートされているわけではなく、「動作する」でしょう。 TypeScriptは基本的にこのモジュールを2番目のソースフォルダーとして扱います。つまり、プロジェクトをコンパイルすると、angular-select2-component
もコンパイルされます。コンパイルする必要があるため、tsconfig.json
から除外しても問題ありません。これは、ソースファイルの1つを除外しようとしたが、別のソースファイルによってインポートされた場合と同じ結果になります。これは、skipLibCheck
が無視される理由でもあります。
したがって、angular-select2-component
は必要なので、コンパイルから除外する方法はありません。 @nickolayのソリューションを使用できる場合があります。これは、リンティングから除外しますが、コンパイル用に残します。彼の「ソリューション3」の実装はグロブを使用しており、「ソリューション3」での試みでグロブを使用していないように見えることに注意してください。
また、フラグ--type-check
for tslintはnode_modules
フラグを削除する--type-check
コマンドを実行したとき
例えば
tslint -e \"node_modules/**/*.ts\" -p tsconfig.json -c tslint.json
の代わりに
tslint -e \"node_modules/**/*.ts\" -p tsconfig.json -c tslint.json --type-check