From 61183b10cb2be0908aebae16ea87e943e8b772e5 Mon Sep 17 00:00:00 2001 From: Wing Gao Date: Tue, 8 May 2018 13:53:19 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0TS=E5=A4=84=E7=90=86as?= =?UTF-8?q?=E7=9A=84=E6=83=85=E5=86=B5=20https://github.com/WingGao/mpvue-?= =?UTF-8?q?ts-demo/issues/7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/mp-compiler/parse-ts.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/mp-compiler/parse-ts.js b/lib/mp-compiler/parse-ts.js index 5792a1f..aaa1ab1 100644 --- a/lib/mp-compiler/parse-ts.js +++ b/lib/mp-compiler/parse-ts.js @@ -2,7 +2,7 @@ let ts try { ts = require('typescript') } catch (e) { - + // console.error(e) } function parseComponentsDeps (scriptContent) { @@ -21,7 +21,10 @@ function delint (sourceFile) { if (node.expression.expression && node.expression.expression.escapedText === 'Component') { const compArgs = node.expression.arguments if (compArgs && compArgs.length === 1) { - const vueClassArg = compArgs[0] + let vueClassArg = compArgs[0] + if(vueClassArg.kind == ts.SyntaxKind.AsExpression) { // @Component({ components: ...,} as any) + vueClassArg = vueClassArg.expression + } if (vueClassArg.properties) { vueClassArg.properties.forEach((classProp) => { // 处理components属性 From 69b30bd2126f24177ca34bd07bbea468cae94aa9 Mon Sep 17 00:00:00 2001 From: Wing Gao Date: Tue, 8 May 2018 14:19:49 +0800 Subject: [PATCH 2/3] lint --- lib/mp-compiler/parse-ts.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mp-compiler/parse-ts.js b/lib/mp-compiler/parse-ts.js index aaa1ab1..feeba27 100644 --- a/lib/mp-compiler/parse-ts.js +++ b/lib/mp-compiler/parse-ts.js @@ -22,7 +22,7 @@ function delint (sourceFile) { const compArgs = node.expression.arguments if (compArgs && compArgs.length === 1) { let vueClassArg = compArgs[0] - if(vueClassArg.kind == ts.SyntaxKind.AsExpression) { // @Component({ components: ...,} as any) + if (vueClassArg.kind === ts.SyntaxKind.AsExpression) { // @Component({ components: ...,} as any) vueClassArg = vueClassArg.expression } if (vueClassArg.properties) { From e3f48432fdb00162d1371d194908e8b496c1faa9 Mon Sep 17 00:00:00 2001 From: Wing Gao Date: Tue, 8 May 2018 15:23:59 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=20https://github.com/Meituan-Dianping/mpvue/?= =?UTF-8?q?issues/425?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/mp-compiler/parse-ts.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/mp-compiler/parse-ts.js b/lib/mp-compiler/parse-ts.js index feeba27..44acaf4 100644 --- a/lib/mp-compiler/parse-ts.js +++ b/lib/mp-compiler/parse-ts.js @@ -6,6 +6,9 @@ try { } function parseComponentsDeps (scriptContent) { + if (ts === null) { + throw new Error('Please run `npm install -S typescript` to install TypeScript.') + } const sourceFile = ts.createSourceFile('test', scriptContent, ts.ScriptTarget.ESNext, /* setParentNodes */ true) return delint(sourceFile) }