Skip to content
This repository has been archived by the owner on Feb 14, 2021. It is now read-only.

valor-software/tslint-config-valorsoft

Repository files navigation

Welcome to the most strict tslint config ever

npm version npm downloads Build Status Dependency Status devDependency Status

Follow me twitter to be notified about new releases.

Philosophy

  • contains all rules explicitly
  • almost all rules enabled

Before install

Check version of your code editor, highly recommended to use latest version.

If you use angular-cli:

  • check that you have latest version, at least 1.0.2, and local and global versions of cli are the same.
  • disable ts lint for polyfill.ts and test.ts(in src folder). Add /* tslint:disable */ at the beginning. For more info: https://palantir.github.io/tslint/usage/rule-flags/

Install

  1. Install package
npm install -D tslint-config-valorsoft
  • check install log for errors and warnings about wrong versions of required packages (tslint, codelyzer etc.)
  • if needed install or update required packages
  • Example. You can have this situation in the end of log after installing:
npm WARN tslint-config-valorsoft@2.0.0 requires a peer of codelyzer@^3.0.0 but none was installed.
npm WARN tslint-config-valorsoft@2.0.0 requires a peer of tslint@^5.1.0 but none was installed.

It means that you have to update codelyzer and tslint to ^3.0.0 and ^5.1.0 versions (or higher).

  1. Edit your tslint.json:
  • add "extends": "tslint-config-valorsoft" or "extends": ["tslint-config-valorsoft", "tslint-config-valorsoft/tslint-angular.json"], for angular projects at the beginning, before rulesDirectory
  • remove all rules inside "rules" object
  • add your custom rules
  • add rules with editable shortname of your project.
"component-selector": [true, "element", "MP", "kebab-case"],
"directive-selector": [true, "attribute", "MP", "camelCase"],
"pipe-naming": [true, "camelCase", "MP"]

Note: MP is a placeholder, it is your prefix for components. If you don't need it you should change MP to empty string - [true, "camelCase", ""]

Example:

// tslint.json
{
  "extends": ["tslint-config-valorsoft", "tslint-config-valorsoft/tslint-angular.json"],
  "rulesDirectory": "node_modules/codelyzer",

  "rules": {
    // your customization
    // THIS IS IMPORTANT
    // ADD THIS RULES TO YOUR `tslint.json`
    // AND CHANGE `MP` with short name of your project
    "directive-selector": [true, "attribute", "MP", "camelCase"],
    "component-selector": [true, "element", "MP", "kebab-case"],
    "pipe-naming": [true, "camelCase", "MP"]
  }
}

After install

Setup lint command:

  • add --type-check parameter to lint command in package.json. Example: "lint": "ng lint --type-check";

Note: If you have warning Warning: Cannot read property 'some' of undefined after running tslint, update codelyzer and tslint to latest versions. For now they are codelyzer@^3.0.1 and tslint@^5.2.0

You could configure:

Disabled:

  • no-parameter-properties because it is very convenient to use constructor(private inject:Service)
  • no-null-keyword null should be used to clean references
  • no-require-imports - require is sometimes useful
  • object-literal-sort-keys not really useful
  • completed-docs forcing writing a docs, usually leads to low or harmful copy paste style documentation
  • file-header up to you
  • no-parameter-properties reading the docs is the best way to avoid confusion
  • prefer-for-of bad performance
  • prefer-object-spread bad performance
  • no-magic-numbers up to you

TBD:

Contribution

  • what I really appreciate is configs for IDEs
  • to change any rule you should have strong arguments and not only opinion

LICENSE

MIT