web-dev-qa-db-ja.com

tslintがangularプロジェクトのnode_modulesを除外しない

以下を実行して、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.jsontsconfig-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
7
Philip John

解決策1:

チェックを開始するディレクトリを明示的に指定してください。私の終わりにそれは:

"scripts": {
    "lint": "tslint \"src/**/*.ts\"",
},

このソリューションは、プロジェクトが適切に構成されている場合にのみ機能します。

package.json
some-other.conf.js
src/here_is_app_code

解決策2:

{
    "extends": [
      "tslint:recommended"
    ],
    "linterOptions": {
        "exclude": [
            "node_modules"
        ]
    }
}

詳細は this PR にあります

ソリューション3:

tslint \"./**/*.ts\" -e \"node_modules\"

-e--excludeの省略形で、 this PR で始まります。

5
Maciej Treder

問題はあなたのtsconfigではありません。実際、デフォルトでnode_modulesを除外する必要があります。問題はangular-select2-componentモジュールです。正しく構築されていません。

ほとんどのTypeScriptモジュールは、JSファイル(プロジェクトのコンパイル済み出力)を指すpackage.jsonmainがあるように構築されています。また、ルートタイプ定義ファイルpackage.jsonを指す.d.tstypesエントリがあります。

インポートするモジュール(angular-select2-component)のmainエントリは、TypeScriptファイルであるindex.tsに設定されています。 typesエントリはありません。これは完全にサポートされているわけではなく、「動作する」でしょう。 TypeScriptは基本的にこのモジュールを2番目のソースフォルダーとして扱います。つまり、プロジェクトをコンパイルすると、angular-select2-componentもコンパイルされます。コンパイルする必要があるため、tsconfig.jsonから除外しても問題ありません。これは、ソースファイルの1つを除外しようとしたが、別のソースファイルによってインポートされた場合と同じ結果になります。これは、skipLibCheckが無視される理由でもあります。

したがって、angular-select2-componentは必要なので、コンパイルから除外する方法はありません。 @nickolayのソリューションを使用できる場合があります。これは、リンティングから除外しますが、コンパイル用に残します。彼の「ソリューション3」の実装はグロブを使用しており、「ソリューション3」での試みでグロブを使用していないように見えることに注意してください。

2
Pace

また、フラグ--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
0