Skip to content

Commit f065d18

Browse files
committed
test: tests for template inehritance
1 parent 1869aa2 commit f065d18

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

packages/@vue/cli/__tests__/Generator.spec.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,35 @@ fs.writeFileSync(path.resolve(templateDir, 'foo.js'), 'foo(<%- options.n %>)')
1313
mkdirp.sync(path.resolve(templateDir, 'bar'))
1414
fs.writeFileSync(path.resolve(templateDir, 'bar/bar.js'), 'bar(<%- m %>)')
1515

16+
fs.writeFileSync(path.resolve(templateDir, 'replace.js'), `
17+
---
18+
extend: '${path.resolve(templateDir, 'bar/bar.js')}'
19+
replace: !!js/regexp /bar\\((.*)\\)/
20+
---
21+
baz($1)
22+
`.trim())
23+
24+
fs.writeFileSync(path.resolve(templateDir, 'multi-replace-source.js'), `
25+
foo(1)
26+
bar(2)
27+
`.trim())
28+
29+
fs.writeFileSync(path.resolve(templateDir, 'multi-replace.js'), `
30+
---
31+
extend: '${path.resolve(templateDir, 'multi-replace-source.js')}'
32+
replace:
33+
- !!js/regexp /foo\\((.*)\\)/
34+
- !!js/regexp /bar\\((.*)\\)/
35+
---
36+
<%# REPLACE %>
37+
baz($1)
38+
<%# END_REPLACE %>
39+
40+
<%# REPLACE %>
41+
qux($1)
42+
<%# END_REPLACE %>
43+
`.trim())
44+
1645
test('api: extendPackage', async () => {
1746
const generator = new Generator('/', {
1847
name: 'hello',
@@ -178,6 +207,8 @@ test('api: render fs directory', async () => {
178207

179208
expect(fs.readFileSync('/foo.js', 'utf-8')).toMatch('foo(1)')
180209
expect(fs.readFileSync('/bar/bar.js', 'utf-8')).toMatch('bar(2)')
210+
expect(fs.readFileSync('/replace.js', 'utf-8')).toMatch('baz(2)')
211+
expect(fs.readFileSync('/multi-replace.js', 'utf-8')).toMatch('baz(1)\nqux(2)')
181212
})
182213

183214
test('api: render object', async () => {

packages/@vue/cli/lib/GeneratorAPI.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,10 @@ function renderFile (name, data, ejsOptions) {
229229
const content = parsed.__content
230230
let finalTemplate = content.trim() + `\n`
231231
if (parsed.extend) {
232-
finalTemplate = fs.readFileSync(require.resolve(parsed.extend), 'utf-8')
232+
const extendPath = path.isAbsolute(parsed.extend)
233+
? parsed.extend
234+
: require.resolve(parsed.extend)
235+
finalTemplate = fs.readFileSync(extendPath, 'utf-8')
233236
if (parsed.replace) {
234237
if (Array.isArray(parsed.replace)) {
235238
const replaceMatch = content.match(replaceBlockRE)

0 commit comments

Comments
 (0)