4 Commits

Author SHA1 Message Date
Kent C. Dodds
00eade470c add lint-staged 2019-11-12 17:40:22 -07:00
Kent C. Dodds
dbbb2064b7 add husky 2019-11-12 17:39:35 -07:00
Kent C. Dodds
28545516e3 support eslint with typescript 2019-11-12 17:38:47 -07:00
Kent C. Dodds
b0d4378a07 add typescript 2019-11-12 17:37:54 -07:00
9 changed files with 1524 additions and 24 deletions

View File

@@ -7,6 +7,7 @@
"node": "10"
}
}
]
],
"@babel/preset-typescript"
]
}
}

View File

@@ -12,5 +12,20 @@
},
"env": {
"browser": true
}
},
"overrides": [
{
"files": "**/*.+(ts|tsx)",
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "./tsconfig.json"
},
"plugins": ["@typescript-eslint/eslint-plugin"],
"extends": [
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"eslint-config-prettier/@typescript-eslint"
]
}
]
}

5
.huskyrc Normal file
View File

@@ -0,0 +1,5 @@
{
"hooks": {
"pre-commit": "npm run check-types && lint-staged"
}
}

9
.lintstagedrc Normal file
View File

@@ -0,0 +1,9 @@
{
"*.+(js|ts|tsx)": [
"eslint"
],
"*.+(js|json|ts|tsx)": [
"prettier --write",
"git add"
]
}

1454
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -4,19 +4,26 @@
"author": "Kent C. Dodds (http://kentcdodds.com/)",
"license": "GPLv3",
"scripts": {
"build": "babel src --out-dir dist",
"lint": "eslint --ignore-path .gitignore .",
"prettier": "prettier --ignore-path .gitignore \"**/*.+(js|json)\"",
"build": "babel src --extensions .js,.ts,.tsx --out-dir dist",
"lint": "eslint --ignore-path .gitignore --ext .js,.ts,.tsx .",
"check-types": "tsc",
"prettier": "prettier --ignore-path .gitignore \"**/*.+(js|json|ts|tsx)\"",
"format": "npm run prettier -- --write",
"check-format": "npm run prettier -- --list-different",
"validate": "npm run check-format && npm run lint && npm run build"
"validate": "npm run check-types && npm run check-format && npm run lint && npm run build"
},
"devDependencies": {
"@babel/cli": "^7.7.0",
"@babel/core": "^7.7.2",
"@babel/preset-env": "^7.7.1",
"@babel/preset-typescript": "^7.7.2",
"@typescript-eslint/eslint-plugin": "^2.7.0",
"@typescript-eslint/parser": "^2.7.0",
"eslint": "^6.6.0",
"eslint-config-prettier": "^6.5.0",
"prettier": "^1.19.1"
"husky": "^3.0.9",
"lint-staged": "^9.4.2",
"prettier": "^1.19.1",
"typescript": "^3.7.2"
}
}

View File

@@ -1,14 +0,0 @@
function add(a, b) {
return a + b
}
function getFullName(user) {
const {
name: {first, middle, last},
} = user
return [first, middle, last].filter(Boolean).join('')
}
add(1, 'two')
getFullName({name: {first: 'Joe', midd1e: 'Bud', last: 'Matthews'}})

21
src/typescript-example.ts Normal file
View File

@@ -0,0 +1,21 @@
function add(a: number, b: number): number {
return a + b
}
interface User {
name: {
first: string
middle: string
last: string
}
}
function getFullName(user: User): string {
const {
name: {first, middle, last},
} = user
return [first, middle, last].filter(Boolean).join('')
}
add(1, 2)
getFullName({name: {first: 'Joe', middle: 'Bud', last: 'Matthews'}})

6
tsconfig.json Normal file
View File

@@ -0,0 +1,6 @@
{
"compilerOptions": {
"noEmit": true,
"baseUrl": "./src"
}
}