https://github.com/angular/angular
Raw File
Tip revision: 115aafbe51cf0ff6ca0dd47d64f944e37e5dd86b authored by Dylan Hunn on 30 March 2022, 21:09:45 UTC
release: cut the v14.0.0-next.10 release (#45484)
Tip revision: 115aafb
tslint.json
{
  "rulesDirectory": [
    "tools/tslint",
    "node_modules/@angular/dev-infra-private/tslint-rules",
    "node_modules/vrsource-tslint-rules/rules",
    "node_modules/tslint-eslint-rules/dist/rules",
    "node_modules/tslint-no-toplevel-property-access/rules"
  ],
  "rules": {
    // The first rule needs to be `ts-node-loader` which sets up `ts-node` within TSLint so
    // that rules written in TypeScript can be loaded without needing to be transpiled.
    "ts-node-loader": true,
    // Custom rules written in TypeScript.
    "require-internal-with-underscore": true,
    "no-implicit-override-abstract": true,
    "validate-import-for-esm-cjs-interop": [true, {
      // The following CommonJS modules have type definitions that suggest the existence of
      // named exports. This is not true at runtime when imported from an ES module (because
      // the ESM interop only exposes statically-discoverable named exports). Instead
      // default imports should be used to ensure compatibility with both ESM or CommonJS.
      "noNamedExports": ["typescript", "minimist", "magic-string", "semver", "yargs", "glob", "cluster", "convert-source-map"],
      // The following CommonJS modules appear to have a default export available (due to the `esModuleInterop` flag),
      // but at runtime with CJS (e.g. for devmode output/tests) there is no default export as these modules set
      // `__esModule`. This does not match with what happens in ESM NodeJS runtime where NodeJS exposes
      // `module.exports` as `export default`. Instead, named exports should be used for compat with CJS/ESM.
      "noDefaultExport": [],
      // List of modules which are incompatible and should never be imported at all.
      "incompatibleModules": {
        // `@babel/core` and `@babel/types` suggest named exports which do not exist at runtime within ESM
        // (as these named exports are not statically discoverable by NodeJS). At the same time, these modules
        // set `__esModule` and the default import does not exist for CJS at runtime (e.g. breaking tests).
        "@babel/core": "This module is incompatible with the ESM/CJS interop. Use the custom interop file.",
        "@babel/types": "This module is incompatible with the ESM/CJS interop. Use the custom interop file and import the `types` namespace."
      }
    }],
    "eofline": true,
    "file-header": [
      true,
      {
        "match": "Copyright Google LLC",
        "allow-single-line-comments": false,
        "default": "@license\nCopyright Google LLC All Rights Reserved.\n\nUse of this source code is governed by an MIT-style license that can be\nfound in the LICENSE file at https://angular.io/license"
      }
    ],
    "no-console": [
      true,
      "log"
    ],
    "no-construct": true,
    "no-duplicate-imports": true,
    "no-duplicate-variable": true,
    "no-var-keyword": true,
    "prefer-literal": [
      true,
      "object"
    ],
    "no-toplevel-property-access": [
      true,
      "packages/animations/src/",
      "packages/animations/browser/",
      "packages/common/src/",
      "packages/core/src/",
      "packages/elements/src/",
      "packages/forms/src/",
      "packages/platform-browser/src/",
      "packages/router/src/"
    ],
    "semicolon": [
      true
    ],
    "variable-name": [
      true,
      "ban-keywords"
    ],
    "no-inner-declarations": [
      true,
      "function"
    ],
    "no-debugger": true,
    "ban": [
      true,
      {"name": "fdescribe", "message": "Don't keep jasmine focus methods."},
      {"name": "fit", "message": "Don't keep jasmine focus methods."}
    ]
  },
  "jsRules": {
    // The first rule needs to be `ts-node-loader` which sets up `ts-node` within TSLint so
    // that rules written in TypeScript can be loaded without needing to be transpiled.
    "ts-node-loader": true,
    // Custom rules written in TypeScript.
    "require-internal-with-underscore": true,

    "eofline": true,
    "file-header": [
      true,
      {
        "match": "Copyright Google LLC",
        "allow-single-line-comments": false,
        "default": "@license\nCopyright Google LLC All Rights Reserved.\n\nUse of this source code is governed by an MIT-style license that can be\nfound in the LICENSE file at https://angular.io/license"
      }
    ],
    "no-console": [
      true,
      "log"
    ],
    "no-duplicate-imports": true,
    "no-duplicate-variable": true,
    "semicolon": [
      true
    ],
    "variable-name": [
      true,
      "ban-keywords"
    ],
    "no-inner-declarations": [
      true,
      "function"
    ],
    "ban": [
      true,
      {"name": "fdescribe", "message": "Don't keep jasmine focus methods."},
      {"name": "fit", "message": "Don't keep jasmine focus methods."}
    ]
  },
  "linterOptions": {
    "exclude": [
      "**/node_modules/**/*",
      // Ignore AIO and integration tests.
      "./aio/**/*",
      "./integration/**/*",
      // Ignore output directories
      "./built/**/*",
      "./dist/**/*",
      "./bazel-out/**/*",
      // Ignore special files
      "**/*.externs.js",
      // Ignore test files
      "./packages/compiler-cli/test/compliance/test_cases/**/*",
      "./packages/localize/**/test_files/**/*",
      "./tools/public_api_guard/**/*.d.ts",
      "./modules/benchmarks_external/**/*",
      // Ignore zone.js directory
      // TODO(JiaLiPassion): add zone.js back later
      "./packages/zone.js/**/*",

      "./devtools/bazel-out/**/*",
      "./devtools/projects/ng-devtools/src/lib/vendor/**/*"
    ]
  }
}
back to top