Skip to content

Commit

Permalink
feat: Provide installation instructions on missing language preproces…
Browse files Browse the repository at this point in the history
…sors (#10)

* feat: Provide installation instructions on missing language preprocessors

* Updating error, tip messages

* Fixing test name
  • Loading branch information
mikemenaker authored and znck committed May 4, 2018
1 parent 581ce48 commit 97e772c
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
10 changes: 10 additions & 0 deletions lib/compileTemplate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,16 @@ export function compileTemplate (
return actuallyCompile(Object.assign({}, options, {
source: preprocess(options, preprocessor)
}))
} else if (preprocessLang) {
return {
code: (
`var render = function () {}\n` +
`var staticRenderFns = []\n`
),
source: options.source,
tips: [`Component ${options.filename} uses lang ${preprocessLang} for template. Please install the language preprocessor.`],
errors: [`Component ${options.filename} uses lang ${preprocessLang} for template, however it is not installed.`]
};
} else {
return actuallyCompile(options)
}
Expand Down
45 changes: 45 additions & 0 deletions test/compileTemplate.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { parse } from '../lib/parse'
import { compileTemplate } from '../lib/compileTemplate'
import * as compiler from 'vue-template-compiler'

test('preprocess pug', () => {
const template = parse({
source:
'<template lang="pug">\n' +
'body\n' +
' h1 Pug Examples\n' +
' div.container\n' +
' p Cool Pug example!\n' +
'</template>\n',
filename: 'example.vue',
needMap: true
}).template

const result = compileTemplate({
filename: 'example.vue',
source: template.content,
preprocessLang: template.lang,
compiler: compiler
})

expect(result.errors.length).toBe(0)
})

test('warn missing preprocessor', () => {
const template = parse({
source:
'<template lang="unknownLang">\n' +
'</template>\n',
filename: 'example.vue',
needMap: true
}).template

const result = compileTemplate({
filename: 'example.vue',
source: template.content,
preprocessLang: template.lang,
compiler: compiler
})

expect(result.errors.length).toBe(1)
})

0 comments on commit 97e772c

Please sign in to comment.