如何配置 angular 项目 tsconfig paths[] 而不会出现 linting 错误?

how to configure an angular project tsconfig paths[] without linting errors?

我们的 tsconfig.ts

中有以下配置
{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "src",
    "paths": {
      "@app/*": ["app/*"],
      "@pages/*": ["app/pages/*"]
      ...
    },

然后我们可以在其他 ts 文件中使用更清晰的导入,如下所示:

import {UrlConstants} from '@app/common/constants/url-constants';

检查项目时出现问题:

Module '@app/common' is not listed as dependency in package.json

有什么方法可以解决这个问题而不用回到使用 ./***/***/ 导入?

您可以使用此处记录的白名单配置规则 https://palantir.github.io/tslint/rules/no-implicit-dependencies

看起来像这样:

tslint.json

{
  "rules": {
    "no-implicit-dependencies": [
      true,
      [
        "app",
        "pages"
      ],
      "dev"
    ]
  }
}

"dev" 选项并不真正适合您的场景,但如果您像我喜欢的那样检查测试,它会很有用。

就我个人而言,我认为规则应该更聪明,并尝试在某种程度上解析路径的 tsconfig。有时一个人有很多路径,并不是每个人都使用 NPM。 JSPM 用户可能不得不禁用该规则,这是一种耻辱,因为如果您不碰到这个粗糙的边缘,该规则的动机非常好并且非常有用。

这现在应该适用于 @ 前缀路径,因为 https://github.com/palantir/tslint/pull/4192 已被合并。在升级之前,您可能需要使用 "app""pages".