Skip to content

Commit 97e772c

Browse files
mikemenakerznck
authored andcommitted
feat: Provide installation instructions on missing language preprocessors (#10)
* feat: Provide installation instructions on missing language preprocessors * Updating error, tip messages * Fixing test name
1 parent 581ce48 commit 97e772c

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

lib/compileTemplate.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,16 @@ export function compileTemplate (
4040
return actuallyCompile(Object.assign({}, options, {
4141
source: preprocess(options, preprocessor)
4242
}))
43+
} else if (preprocessLang) {
44+
return {
45+
code: (
46+
`var render = function () {}\n` +
47+
`var staticRenderFns = []\n`
48+
),
49+
source: options.source,
50+
tips: [`Component ${options.filename} uses lang ${preprocessLang} for template. Please install the language preprocessor.`],
51+
errors: [`Component ${options.filename} uses lang ${preprocessLang} for template, however it is not installed.`]
52+
};
4353
} else {
4454
return actuallyCompile(options)
4555
}

test/compileTemplate.spec.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { parse } from '../lib/parse'
2+
import { compileTemplate } from '../lib/compileTemplate'
3+
import * as compiler from 'vue-template-compiler'
4+
5+
test('preprocess pug', () => {
6+
const template = parse({
7+
source:
8+
'<template lang="pug">\n' +
9+
'body\n' +
10+
' h1 Pug Examples\n' +
11+
' div.container\n' +
12+
' p Cool Pug example!\n' +
13+
'</template>\n',
14+
filename: 'example.vue',
15+
needMap: true
16+
}).template
17+
18+
const result = compileTemplate({
19+
filename: 'example.vue',
20+
source: template.content,
21+
preprocessLang: template.lang,
22+
compiler: compiler
23+
})
24+
25+
expect(result.errors.length).toBe(0)
26+
})
27+
28+
test('warn missing preprocessor', () => {
29+
const template = parse({
30+
source:
31+
'<template lang="unknownLang">\n' +
32+
'</template>\n',
33+
filename: 'example.vue',
34+
needMap: true
35+
}).template
36+
37+
const result = compileTemplate({
38+
filename: 'example.vue',
39+
source: template.content,
40+
preprocessLang: template.lang,
41+
compiler: compiler
42+
})
43+
44+
expect(result.errors.length).toBe(1)
45+
})

0 commit comments

Comments
 (0)