Tslint始终强制执行no-submodule-imports规则,即使已禁用

时间:2019-01-07 09:44:11

标签: typescript parse-server tslint

我正在尝试将tslint配置为允许Parse库(https://www.npmjs.com/package/parse-js)中的子模块,以便可以使用parse/react-native,但是它不起作用。

我尝试在tslint中同时添加"no-submodule-imports": [true, "parse", "parse/react-native"]"no-submodule-imports": false,但仍然出现以下错误:

ERROR: src/App.tsx:2:19 - Submodule import paths from this package are disallowed; import from the root instead

@types/parse中对此node_modules中的子模块的声明是:

declare module "parse/node" {
    export = Parse;
}

declare module "parse" {
    import * as parse from "parse/node";
    export = parse
}

declare module "parse/react-native" {
    import * as parse from "parse/node";
    export = parse
}

代码运行正常,但是如果我运行tslint,则会收到该错误。我尝试了不同的组合,但是仍然有问题。

这是我的tslint.json的样子:

{
  "extends": [
    "tslint:latest",
    "tslint-react",
    "tslint-react-a11y",
    "tslint-config-prettier"
  ],
  "no-submodule-imports": [true, "parse", "parse/react-native"],
  "import-blacklist": false,
  "defaultSeverity": "error",
  "rules": {
    "ban": {
      "options": [
        ["_", "extend", "use object spread: { ...a, ...b }"],
        ["_", "isNull", "use plain JS: == null"],
        ["_", "isDefined", "use plain JS: != null"],
        ["Object", "assign", "use object spread: { ...a, ...b }"],
        ["Object", "getOwnPropertyNames", "use Object.keys()"],
        ["describe", "only", "should not be committed to repo"],
        ["it", "only", "should not be committed to repo"],
        ["test", "only", "should not be committed to repo"]
      ]
    },
    "no-object-literal-type-assertion": false,
    "ordered-imports": [
      true,
      {
        "import-sources-order": "any",
        "named-imports-order": "any"
      }
    ],
    "no-any": true,
    "interface-over-type-literal": false,
    "linebreak-style": {
      "options": ["LF"]
    },
    "quotemark": [true, "single"],
    "jsx-boolean-value": ["never"],
    "member-access": [true],
    "no-console": false,
    "no-implicit-dependencies": false,
    "no-invalid-this": {
      "options": ["check-function-in-method"]
    },
    "interface-name": false,
    "max-classes-per-file": false,
    "jsx-no-lambda": false,
    "no-trailing-whitespace": true,
    "no-this-assignment": [
      true,
      {
        "allow-destructuring": true
      }
    ],
    "no-unnecessary-callback-wrapper": false,
    "no-unnecessary-initializer": true,
    "object-literal-sort-keys": false,
    "prefer-conditional-expression": false,
    "variable-name": {
      "options": [
        "allow-leading-underscore",
        "allow-pascal-case",
        "ban-keywords",
        "check-format"
      ]
    },
    "member-ordering": [
      true,
      "private-before-public",
      "static-before-instance",
      "variables-before-functions"
    ],
    "trailing-comma": [
      true,
      {
        "multiline": "always",
        "singleline": "never",
        "esSpecCompliant": true
      }
    ]
  },
  "jsRules": {
    "object-literal-sort-keys": false
  },
  "linterOptions": {
    "exclude": [
      "/**/packages/newrelic-webpack-plugin/embedded.js",
      "/**/coverage/**/*",
      "/**/*.json",
      "/**/build/**/*"
    ]
  }
}

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我也遇到了这个问题。看起来对于有角度的项目,规则必须位于src文件夹内的tslint文件中。