feat(compiler-sfc): generate source map for template block
This commit is contained in:
parent
9e757b5cc5
commit
865c1ce9ee
@ -112,28 +112,20 @@ export function parse(
|
||||
})
|
||||
|
||||
if (sourceMap) {
|
||||
if (sfc.script && !sfc.script.src) {
|
||||
sfc.script.map = generateSourceMap(
|
||||
const genMap = (block: SFCBlock | null) => {
|
||||
if (block && !block.src) {
|
||||
block.map = generateSourceMap(
|
||||
filename,
|
||||
source,
|
||||
sfc.script.content,
|
||||
block.content,
|
||||
sourceRoot,
|
||||
pad
|
||||
pad ? 0 : block.loc.start.line - 1
|
||||
)
|
||||
}
|
||||
if (sfc.styles) {
|
||||
sfc.styles.forEach(style => {
|
||||
if (!style.src) {
|
||||
style.map = generateSourceMap(
|
||||
filename,
|
||||
source,
|
||||
style.content,
|
||||
sourceRoot,
|
||||
pad
|
||||
)
|
||||
}
|
||||
})
|
||||
}
|
||||
genMap(sfc.template)
|
||||
genMap(sfc.script)
|
||||
sfc.styles.forEach(genMap)
|
||||
}
|
||||
sourceToSFC.set(sourceKey, sfc)
|
||||
|
||||
@ -205,27 +197,19 @@ function generateSourceMap(
|
||||
source: string,
|
||||
generated: string,
|
||||
sourceRoot: string,
|
||||
pad?: SFCParseOptions['pad']
|
||||
lineOffset: number
|
||||
): RawSourceMap {
|
||||
const map = new SourceMapGenerator({
|
||||
file: filename.replace(/\\/g, '/'),
|
||||
sourceRoot: sourceRoot.replace(/\\/g, '/')
|
||||
})
|
||||
let offset = 0
|
||||
if (!pad) {
|
||||
offset =
|
||||
source
|
||||
.split(generated)
|
||||
.shift()!
|
||||
.split(splitRE).length - 1
|
||||
}
|
||||
map.setSourceContent(filename, source)
|
||||
generated.split(splitRE).forEach((line, index) => {
|
||||
if (!emptyRE.test(line)) {
|
||||
map.addMapping({
|
||||
source: filename,
|
||||
original: {
|
||||
line: index + 1 + offset,
|
||||
line: index + 1 + lineOffset,
|
||||
column: 0
|
||||
},
|
||||
generated: {
|
||||
|
Loading…
x
Reference in New Issue
Block a user