Skip to content

Commit fd3c5e2

Browse files
committed
✨ add typescript-eslint-parser
1 parent c3a31a8 commit fd3c5e2

File tree

6 files changed

+54
-3
lines changed

6 files changed

+54
-3
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
"postcss-preset-env": "^6.1.2",
3636
"rimraf": "^2.6.2",
3737
"string-replace-loader": "^1.3.0",
38+
"typescript": "~3.1.6",
39+
"typescript-eslint-parser": "^21.0.1",
3840
"url-loader": "^1.1.2",
3941
"vue": "^2.5.9",
4042
"vue-eslint-editor": "^0.1.2",

scripts/make-versions.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@ const fs = require("fs")
55
fs.writeFileSync(
66
"dist/versions.json",
77
JSON.stringify({
8+
"babel-eslint": require("babel-eslint/package.json").version,
89
eslint: require("eslint/package.json").version,
910
"eslint-plugin-vue": require("eslint-plugin-vue/package.json").version,
11+
typescript: require("typescript/package.json").version,
12+
"typescript-eslint-parser": require("typescript-eslint-parser/package.json")
13+
.version,
1014
"vue-eslint-demo": require("../package.json").version,
1115
"vue-eslint-parser": require("vue-eslint-parser/package.json").version,
1216
}),

src/configuration-parser-select.vue

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ const PARSRES = Object.freeze([
2222
name: "babel-eslint",
2323
url: "https://github.com/babel/babel-eslint",
2424
}),
25+
Object.freeze({
26+
id: "typescript-eslint-parser",
27+
name: "typescript-eslint-parser",
28+
url: "https://github.com/eslint/typescript-eslint-parser",
29+
}),
2530
])
2631
2732
export default {

src/state/deserialize.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ export function deserializeState(serializedString) {
4343
if (json.indentType === "space" || json.indentType === "tab") {
4444
state.indentType = json.indentType
4545
}
46-
if (json.parser === "espree" || json.parser === "babel-eslint") {
46+
if (
47+
json.parser === "espree" ||
48+
json.parser === "babel-eslint" ||
49+
json.parser === "typescript-eslint-parser"
50+
) {
4751
state.config.parserOptions.parser = json.parser
4852
}
4953
}

src/versions.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,12 @@ export default {
2020
repo: "babel/babel-eslint",
2121
version: "0.0.0",
2222
},
23+
"typescript-eslint-parser": {
24+
repo: "eslint/typescript-eslint-parser",
25+
version: "0.0.0",
26+
},
27+
typescript: {
28+
repo: "Microsoft/typescript",
29+
version: "0.0.0",
30+
},
2331
}

webpack.config.js

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,23 @@ const VERSIONS = `export default ${JSON.stringify({
2626
repo: "babel/babel-eslint",
2727
version: require("babel-eslint/package.json").version,
2828
},
29+
"typescript-eslint-parser": {
30+
repo: "eslint/typescript-eslint-parser",
31+
version: require("typescript-eslint-parser/package.json").version,
32+
},
33+
typescript: {
34+
repo: "Microsoft/typescript",
35+
version: require("typescript/package.json").version,
36+
},
2937
})}`
3038

39+
// Shim for vue-eslint-parser.
40+
const IMPORT_PARSER = `(
41+
parserOptions.parser === "babel-eslint" ? require("babel-eslint") :
42+
parserOptions.parser === "typescript-eslint-parser" ? require("typescript-eslint-parser") :
43+
/* otherwise */ require("espree")
44+
)`
45+
3146
module.exports = env => {
3247
const prod = Boolean(env && env.production)
3348
const mode = prod ? "production" : "development"
@@ -136,8 +151,7 @@ module.exports = env => {
136151
options: {
137152
search:
138153
'typeof parserOptions.parser === "string"\n ? require(parserOptions.parser)\n : require("espree")',
139-
replace:
140-
'(parserOptions.parser === "babel-eslint" ? require("babel-eslint") : require("espree"))',
154+
replace: IMPORT_PARSER,
141155
},
142156
},
143157
],
@@ -177,6 +191,20 @@ module.exports = env => {
177191
},
178192
],
179193
},
194+
// Patch for `typescript`
195+
{
196+
test: /node_modules[/\\]typescript[/\\]lib[/\\]typescript.js$/,
197+
use: [
198+
{
199+
loader: "string-replace-loader",
200+
options: {
201+
search: "require\\(.+?\\)",
202+
replace: "null",
203+
flags: "g",
204+
},
205+
},
206+
],
207+
},
180208
],
181209
},
182210
resolve: {

0 commit comments

Comments
 (0)