如何配置Angular项目的tsconfig paths[],避免出现linting错误?

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

然后我们可以在其他 TypeScript 文件中使用更加简洁的导入方式,类似这样:
import {UrlConstants} from '@app/common/constants/url-constants';

在对项目进行代码检查时遇到了问题:

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

有没有其他方法可以解决这个问题,而不必返回到使用 ./***/***/ 进行导入?

您显然在使用自定义Lint规则,而该规则已损坏。请禁用该规则并提交问题报告。 - Aluan Haddad
1
@AluanHaddad 自定义 Lint 规则?https://palantir.github.io/tslint/rules/no-implicit-dependencies/ 这是我认为的规则。 - Deniss M.
1
啊,这是官方规则的一部分。感谢提供参考。你可以禁用该规则或按照说明将模块列入白名单。尽管如此,我仍然认为这是规则中的一个错误。在许多情况下,路径并不仅仅是一种便利。 - Aluan Haddad
@AluanHaddad 白名单模块?你能给个例子吗 :) 谢谢,顺便说一下,你可以提交一个答案而不是评论。我也看到了这个讨论,它似乎遵循类似的模式:https://dev59.com/O1gQ5IYBdhLWcg3wIASb - Deniss M.
1
我认为我没有回答任何问题,因为你刚刚链接的文档展示了如何使用白名单配置规则。我只想加上我的不满意见,即路径映射很重要。 - Aluan Haddad
1
@AluanHaddad 我正在尝试理解如何根据我提供的文档创建白名单,但我无法理解。你能否给一个例子/提示?谢谢!还有一个有趣的话题:https://github.com/palantir/tslint/issues/3364 - Deniss M.
1个回答

4
你可以按照这里的文档 https://palantir.github.io/tslint/rules/no-implicit-dependencies 配置白名单规则。
这将会是这个样子:

tslint.json

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

"dev"选项并不适用于您的情况,但如果您像我一样对测试进行lint,则它很有用。
个人而言,我认为规则应该更加智能化,并尝试在某种程度上解析tsconfig中的路径。有时候,人们会有很多路径,而不是每个人都使用NPM。 JSPM用户可能必须禁用规则,这很遗憾,因为规则非常有动力,如果您没有遇到这个问题,它非常有用。
现在,这应该可以针对以“@”为前缀的路径正常工作,因为https://github.com/palantir/tslint/pull/4192已经合并。在您升级之前,您可能需要使用“app”和“pages”。"

1
@DenissM。看起来在 https://github.com/palantir/tslint/pull/4192 合并之前,这似乎不适用于以 @ 为前缀的路径。 - Aluan Haddad
在浏览他们的Github时,我也有这种印象...那么我们有两个选择 - 将所有内容重命名为app(不带@),或者切换回常规导入。 - Deniss M.
1
或者在他们修复这个该死的东西之前,关闭这个规则。那绝对是我会做的事情。 - Aluan Haddad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接