Skip to content

Commit ecb8c18

Browse files
haoqunjiangyyx990803
authored andcommitted
fix: support generator/index.js in local presets (vuejs#2263)
fixes vuejs#2172
1 parent b81d11e commit ecb8c18

File tree

6 files changed

+43
-3
lines changed

6 files changed

+43
-3
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = (api, options) => {
2+
api.render('./template', options)
3+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<%= ok %>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"plugins": {
3+
"@vue/cli-plugin-babel": {}
4+
}
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = [{
2+
type: 'confirm',
3+
name: 'ok',
4+
message: 'Are you ok?'
5+
}]

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,29 @@ test('fetching local preset with prompts and generator', async () => {
3030
const pkg = require(path.resolve(cwd, name, 'package.json'))
3131
expect(pkg.devDependencies).toHaveProperty('@vue/cli-plugin-babel')
3232
})
33+
34+
test('should recognize generator/index.js in a local preset directory', async () => {
35+
const cwd = path.resolve(__dirname, '../../../test')
36+
const name = 'test-preset-template'
37+
38+
expectPrompts([{
39+
message: 'Are you ok',
40+
confirm: true
41+
}])
42+
43+
await create(
44+
name,
45+
{
46+
force: true,
47+
git: false,
48+
cwd,
49+
preset: path.resolve(__dirname, './mock-preset-with-template')
50+
}
51+
)
52+
53+
const testFile = await fs.readFile(path.resolve(cwd, name, 'test.js'), 'utf-8')
54+
expect(testFile).toBe('true\n')
55+
56+
const pkg = require(path.resolve(cwd, name, 'package.json'))
57+
expect(pkg.devDependencies).toHaveProperty('@vue/cli-plugin-babel')
58+
})

packages/@vue/cli/lib/util/loadPresetFromDir.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ module.exports = async function loadPresetFromDir (dir) {
88
}
99
const preset = await fs.readJson(presetPath)
1010

11-
// if the preset dir contains generator.js, we will inject it as a hidden
11+
// if the preset dir contains generator.js or generator/index.js, we will inject it as a hidden
1212
// plugin so it will be invoked by the generator.
13-
const generatorPath = path.join(dir, 'generator.js')
14-
if (fs.existsSync(generatorPath)) {
13+
const hasGenerator = fs.existsSync(path.join(dir, 'generator.js')) || fs.existsSync(path.join(dir, 'generator/index.js'))
14+
if (hasGenerator) {
1515
(preset.plugins || (preset.plugins = {}))[dir.replace(/[\/]$/, '')] = {
1616
_isPreset: true,
1717
prompts: true

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy