tslint不排除angular项目中的node_modules

时间:2018-03-13 08:48:00

标签: angular typescript tslint

我尝试执行以下操作以从val df = ... // schema => timestamp: TimestampType, stockId: StringType, price: DoubleType df.groupBy(window($"time", "1 minute"), $"stockId") .agg(mean("price")) 中排除node_modules。 但他们都没有解决这个问题。

如果是因为我调用tslint文件夹的方式,我很困惑。

首次尝试 - 在node_modulestsconfig.json

中添加了以下内容
tsconfig-aot.json

第二次尝试 - 为"exclude": [ "../node_modules/**/*", "./node_modules/**/*", "node_modules", "node_modules/**/*.ts", "**/node_modules/**/*", "**/node_modules/**" ]

中的每个项目部分添加了exclude
.angular-cli.json

第三次尝试 - 使用"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 时,我仍然会从node_modules获取这些警告。

同样在yarn webpack:buildtsconfig.json中,它已经有tsconfig-aot.json

更新

我安装了导致错误的npm模块"skipLibCheck": true。添加了tslint stacktrace。

angular-select2-component

3 个答案:

答案 0 :(得分:2)

解决方案一:

尝试明确指定应从哪个目录开始检查。在我的结尾是:

"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一起使用。

答案 1 :(得分:2)

问题不是您的tsconfig。实际上,默认情况下应排除node_modules。问题是angular-select2-component模块。它的构建不正确。

构建大多数打字稿模块,使得main中有一个指向JS文件(项目的编译输出)的package.json。它们在types中还有一个package.json条目,它指向根类型定义文件.d.ts

您要导入的模块(angular-select2-component)的main条目设置为index.ts,这是一个TypeScript文件。没有types条目。这并非完全不受支持,它“可以工作”。 Typescript基本上会将这个模块视为第二个源文件夹。这意味着在编译项目时,它也在同时编译angular-select2-component。是否从tsconfig.json中排除它并不重要,因为必须对其进行编译。如果您尝试排除一个源文件,但是它是由另一个源文件导入的,则结果将相同。这也是为什么skipLibCheck被忽略的原因。

因此,没有办法从编译中排除angular-select2-component,因为它是必需的。您也许可以使用@nickolay的解决方案,该解决方案可以将其排除在棉绒之外,而让其进行编译。请注意,他对“解决方案3”的实现使用了glob,而您在尝试“解决方案3”时似乎并没有使用glob。

答案 2 :(得分:0)

tslint的标志--type-check也会从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