mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-05-02 10:00:47 -05:00
fix: require parent template after when condition evaluated as truthy (#4330)
fixes #4291
This commit is contained in:
@@ -417,6 +417,22 @@ function renderFile (name, data, ejsOptions) {
|
||||
const parsed = yaml.loadFront(template)
|
||||
const content = parsed.__content
|
||||
let finalTemplate = content.trim() + `\n`
|
||||
|
||||
if (parsed.when) {
|
||||
finalTemplate = (
|
||||
`<%_ if (${parsed.when}) { _%>` +
|
||||
finalTemplate +
|
||||
`<%_ } _%>`
|
||||
)
|
||||
|
||||
// use ejs.render to test the conditional expression
|
||||
// if evaluated to falsy vaule, return early to avoid extra cost for extend expression
|
||||
const result = ejs.render(finalTemplate, data, ejsOptions)
|
||||
if (!result) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if (parsed.extend) {
|
||||
const extendPath = path.isAbsolute(parsed.extend)
|
||||
? parsed.extend
|
||||
@@ -437,13 +453,6 @@ function renderFile (name, data, ejsOptions) {
|
||||
finalTemplate = finalTemplate.replace(parsed.replace, content.trim())
|
||||
}
|
||||
}
|
||||
if (parsed.when) {
|
||||
finalTemplate = (
|
||||
`<%_ if (${parsed.when}) { _%>` +
|
||||
finalTemplate +
|
||||
`<%_ } _%>`
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
return ejs.render(finalTemplate, data, ejsOptions)
|
||||
|
||||
Reference in New Issue
Block a user