优化模板解析

pull/1/head 0.9.4
yutent 2023-05-15 10:54:00 +08:00
parent 99a5fac97d
commit 5d9f768f1e
2 changed files with 36 additions and 10 deletions

View File

@ -298,6 +298,7 @@ export function compileVue(file, imports, options = {}) {
js = js ? js[1] : '' js = js ? js[1] : ''
try {
html = compile(html[1], { html = compile(html[1], {
mode: 'module', mode: 'module',
prefixIdentifiers: true, prefixIdentifiers: true,
@ -307,6 +308,31 @@ export function compileVue(file, imports, options = {}) {
sourceMap: false, sourceMap: false,
isCustomElement: tag => tag.startsWith('wc-') isCustomElement: tag => tag.startsWith('wc-')
}).code.replace('export function render', 'function render') }).code.replace('export function render', 'function render')
} catch (err) {
let tmp = html[1].split('\n')
let line = tmp[err.loc.start.line - 1]
console.log('%s: %s', red('SyntaxError'), red(err.message))
console.log(
' @ %s%s%s',
line.slice(0, err.loc.start.column - 1),
red(err.loc.source),
line.slice(err.loc.end.column - 1)
)
console.log(
' @ (%s:%d:%d)\n',
file,
err.loc.start.line,
err.loc.start.column
)
html = `
import { openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue"
function render(_ctx, _cache) {
return (_openBlock(), _createElementBlock("div", null, "SyntaxError: ${err.message}"))
}
`
}
html = html html = html
.replace(/import .* from "vue"/, str => { .replace(/import .* from "vue"/, str => {

View File

@ -1,7 +1,7 @@
{ {
"name": "fite", "name": "fite",
"type": "module", "type": "module",
"version": "0.9.3", "version": "0.9.4",
"bin": { "bin": {
"fite": "index.js" "fite": "index.js"
}, },