2.2.1 • Published 6 years ago

tslint-config-valorsoft v2.2.1

Weekly downloads
388
License
MIT
Repository
github
Last release
6 years ago

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:

What is disabled

  • no-eq-null - duplicates eqeqeq:smart
  • no-restricted-imports, no-restricted-modules, no-restricted-globals - dependant on project requirements
  • id-match - not found any particular use of this rule, camelCase is enough
  • jsx-quotes - I don't use jsx so I don't care
  • no-plusplus - why not ++? It's nice to use when you know what you are doing
  • no-restricted-syntax - duplicates no-with and disabled functional expressions
  • no-ternary - why not? but not nested ternary please
  • require-jsdoc- nice thing, but hard to follow
  • spaced-comment - nice for meaningful comments, bad for quick code commenting
  • wrap-regex - no need
  • prefer-reflect - compatibility is to low to use
  • newline-before-return - TBD

What is tweaked

  • indent - 2 spaces rulezzz!
  • max-len - extended to 120 chars
  • newline-per-chained-call - extended ignoreChainWithDepth to 3
  • eqeqeq - smart mode enabled
  • dot-location - property mode enabled
  • no-implicit-coercion - boolean implicit coercion enabled
  • func-style - declaration only please
  • no-use-before-define - usage of function before declarations are allowed
  • no-mixed-requires- grouping and allowCall checks enabled
  • linebreak-style - unix only
  • one-var - never use one var|let|const per block
  • padded-blocks - never add useless padding
  • quote-props - quote properties only as-needed and keywords
  • no-magic-numbers - ignore -1,0,1 as most often used numbers and ignoreArrayIndexes, enforceConst are enabled -->

Contribution

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

LICENSE

MIT

2.2.1

6 years ago

2.2.0

6 years ago

2.1.1

7 years ago

2.1.0

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.2.0

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago

0.0.7

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago