mirror of
https://github.com/vuejs/vue.git
synced 2024-11-21 20:28:54 +00:00
fix(compiler-sfc): use safer deindent default for compatibility with previous behavior
This commit is contained in:
parent
ca7daefaa1
commit
b70a2585fc
@ -10,7 +10,6 @@ export const DEFAULT_FILENAME = 'anonymous.vue'
|
||||
const splitRE = /\r?\n/g
|
||||
const replaceRE = /./g
|
||||
const isSpecialTag = makeMap('script,style,template', true)
|
||||
const isNeedIndentLang = makeMap('pug,jade')
|
||||
|
||||
export interface SFCCustomBlock {
|
||||
type: string
|
||||
@ -179,9 +178,13 @@ export function parseComponent(
|
||||
currentBlock.end = start
|
||||
let text = source.slice(currentBlock.start, currentBlock.end)
|
||||
if (
|
||||
options.deindent ||
|
||||
// certain langs like pug are indent sensitive, preserve old behavior
|
||||
(currentBlock.lang && isNeedIndentLang(currentBlock.lang))
|
||||
options.deindent === true ||
|
||||
// by default, deindent unless it's script with default lang or ts
|
||||
(options.deindent !== false &&
|
||||
!(
|
||||
currentBlock.type === 'script' &&
|
||||
(!currentBlock.lang || currentBlock.lang === 'ts')
|
||||
))
|
||||
) {
|
||||
text = deindent(text)
|
||||
}
|
||||
|
@ -25,8 +25,7 @@ describe('Single File Component parser', () => {
|
||||
<div>
|
||||
<style>nested should be ignored</style>
|
||||
</div>
|
||||
`,
|
||||
{ deindent: true }
|
||||
`
|
||||
)
|
||||
expect(res.template!.content.trim()).toBe('<div>hi</div>')
|
||||
expect(res.styles.length).toBe(4)
|
||||
@ -76,8 +75,7 @@ describe('Single File Component parser', () => {
|
||||
</style>
|
||||
`
|
||||
const deindentDefault = parseComponent(content.trim(), {
|
||||
pad: false,
|
||||
deindent: true
|
||||
pad: false
|
||||
})
|
||||
const deindentEnabled = parseComponent(content.trim(), {
|
||||
pad: false,
|
||||
@ -89,7 +87,9 @@ describe('Single File Component parser', () => {
|
||||
})
|
||||
|
||||
expect(deindentDefault.template!.content).toBe('\n<div></div>\n')
|
||||
expect(deindentDefault.script!.content).toBe('\nexport default {}\n')
|
||||
expect(deindentDefault.script!.content).toBe(
|
||||
'\n export default {}\n '
|
||||
)
|
||||
expect(deindentDefault.styles[0].content).toBe('\nh1 { color: red }\n')
|
||||
expect(deindentEnabled.template!.content).toBe('\n<div></div>\n')
|
||||
expect(deindentEnabled.script!.content).toBe('\nexport default {}\n')
|
||||
@ -203,8 +203,7 @@ describe('Single File Component parser', () => {
|
||||
}
|
||||
</test>
|
||||
<custom src="./x.json"></custom>
|
||||
`,
|
||||
{ deindent: true }
|
||||
`
|
||||
)
|
||||
expect(res.customBlocks.length).toBe(4)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user