Eslint + Prettier configuration for Typescript 3.7+ (2020)
Install required dependencies
npm install --save-dev @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint eslint-config-prettier eslint-config-standard eslint-plugin-import eslint-plugin-node eslint-plugin-prettier eslint-plugin-promise eslint-plugin-react eslint-plugin-standard prettier
# OR
yarn add -D @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint eslint-config-prettier eslint-config-standard eslint-plugin-import eslint-plugin-node eslint-plugin-prettier eslint-plugin-promise eslint-plugin-react eslint-plugin-standard prettier
Setup your .eslintrc
config file
{
"rules" : {
"@typescript-eslint/ban-ts-ignore" : [ "off" ] ,
"@typescript-eslint/camelcase" : [ "off" ] ,
"@typescript-eslint/explicit-function-return-type" : [ "off" ] ,
"@typescript-eslint/interface-name-prefix" : [ "off" ] ,
"@typescript-eslint/no-explicit-any" : [ "off" ] ,
"@typescript-eslint/no-unused-expressions" : [ "off" ] ,
"@typescript-eslint/no-var-requires" : [ "off" ] ,
"@typescript-eslint/no-use-before-define" : [ "off" ] ,
"comma-dangle" : [ "error" , "always-multiline" ] ,
"no-async-promise-executor" : [ "off" ] ,
"no-empty-pattern" : [ "off" ] ,
"no-undef" : [ "error" ] ,
"no-var" : [ "error" ] ,
"object-curly-spacing" : [ "error" , "always" ] ,
"quotes" : [ "error" , "double" , { "allowTemplateLiterals" : true } ] ,
"semi" : [ "error" , "always" ] ,
"spaced-comment" : [ "off" ] ,
"no-prototype-builtins" : [ "off" ] ,
"sort-keys" : [ "off" ] ,
"space-before-function-paren" : [ "off" ] ,
"indent" : [ "off" ] ,
} ,
"env" : {
"browser" : true ,
"es6" : true
} ,
"extends" : [
"standard" ,
"eslint:recommended" ,
"plugin:@typescript-eslint/eslint-recommended" ,
"plugin:@typescript-eslint/recommended"
] ,
"parser" : "@typescript-eslint/parser" ,
"parserOptions" : {
"ecmaVersion" : 2018 ,
"sourceType" : "module"
} ,
"plugins" : [ "prettier" , "@typescript-eslint" ]
}
Add the following lint
script to package.json
{
"scripts" : {
"lint" : "eslint -c './.eslintrc' --fix './src/**/*.ts'" ,
} ,
}
(optional) Setup .prettierc
for prettier-vscode extension
{
"tabWidth" : 2 ,
"useTabs" : false ,
"trailingComma" : "all" ,
"printWidth" : 100
}
Seems good,
I just changed this due to personal preference:
"semi": ["error", "never"],
"spaced-comment": ["error", "never"],
//Ideally I would like to distinguish commented out code versus typed