Skip to content

Commit f372f55

Browse files
committed
feat: allow saving multiple presets
1 parent 9856549 commit f372f55

File tree

19 files changed

+250
-191
lines changed

19 files changed

+250
-191
lines changed

__mocks__/inquirer.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ exports.prompt = prompts => {
2828
const a = pendingAssertions[i - skipped]
2929
if (!a) {
3030
console.error(`no matching assertion for prompt:`, prompt)
31+
console.log(prompts)
32+
console.log(pendingAssertions)
3133
}
3234

3335
if (a.message) {

packages/@vue/cli-plugin-pwa/__tests__/pwaPlugin.spec.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ jest.setTimeout(30000)
33
const path = require('path')
44
const portfinder = require('portfinder')
55
const { createServer } = require('http-server')
6-
const { defaults } = require('@vue/cli/lib/options')
6+
const { defaultPreset } = require('@vue/cli/lib/options')
77
const create = require('@vue/cli-test-utils/createTestProject')
88
const launchPuppeteer = require('@vue/cli-test-utils/launchPuppeteer')
99

1010
let server, browser
1111
test('pwa', async () => {
1212
// it's ok to mutate here since jest loads each test in a separate vm
13-
defaults.plugins['@vue/cli-plugin-pwa'] = {}
14-
const project = await create('pwa-build', defaults)
13+
defaultPreset.plugins['@vue/cli-plugin-pwa'] = {}
14+
const project = await create('pwa-build', defaultPreset)
1515
expect(project.has('src/registerServiceWorker.js')).toBe(true)
1616

1717
const { stdout } = await project.run('vue-cli-service build')

packages/@vue/cli-service/__tests__/build.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ jest.setTimeout(30000)
33
const path = require('path')
44
const portfinder = require('portfinder')
55
const { createServer } = require('http-server')
6-
const { defaults } = require('@vue/cli/lib/options')
6+
const { defaultPreset } = require('@vue/cli/lib/options')
77
const create = require('@vue/cli-test-utils/createTestProject')
88
const launchPuppeteer = require('@vue/cli-test-utils/launchPuppeteer')
99

1010
let server, browser, page
1111
test('build', async () => {
12-
const project = await create('e2e-build', defaults)
12+
const project = await create('e2e-build', defaultPreset)
1313

1414
// test public copy
1515
project.write('public/foo.js', '1')

packages/@vue/cli-service/__tests__/buildDLL.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ jest.setTimeout(30000)
33
const path = require('path')
44
const portfinder = require('portfinder')
55
const { createServer } = require('http-server')
6-
const { defaults } = require('@vue/cli/lib/options')
6+
const { defaultPreset } = require('@vue/cli/lib/options')
77
const create = require('@vue/cli-test-utils/createTestProject')
88
const launchPuppeteer = require('@vue/cli-test-utils/launchPuppeteer')
99

1010
let server, browser, page
1111
test('build with DLL', async () => {
12-
const project = await create('e2e-build-dll', Object.assign({}, defaults, {
12+
const project = await create('e2e-build-dll', Object.assign({}, defaultPreset, {
1313
router: true,
1414
vuex: true
1515
}))

packages/@vue/cli-service/__tests__/serve.spec.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
jest.setTimeout(30000)
22

3-
const { defaults } = require('@vue/cli/lib/options')
3+
const { defaultPreset } = require('@vue/cli/lib/options')
44
const create = require('@vue/cli-test-utils/createTestProject')
55
const serve = require('@vue/cli-test-utils/serveWithPuppeteer')
66

77
const sleep = n => new Promise(resolve => setTimeout(resolve, n))
88

99
test('serve', async () => {
10-
const project = await create('e2e-serve', defaults)
10+
const project = await create('e2e-serve', defaultPreset)
1111

1212
await serve(
1313
() => project.run('vue-cli-service serve'),
@@ -26,7 +26,7 @@ test('serve', async () => {
2626
})
2727

2828
test('serve with router', async () => {
29-
const project = await create('e2e-serve-router', Object.assign({}, defaults, {
29+
const project = await create('e2e-serve-router', Object.assign({}, defaultPreset, {
3030
router: true
3131
}))
3232

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module.exports = function silence (exports) {
1+
module.exports = function silence (logName, exports) {
22
const logs = {}
33
Object.keys(exports).forEach(key => {
44
if (key !== 'error') {
@@ -8,5 +8,5 @@ module.exports = function silence (exports) {
88
}
99
}
1010
})
11-
exports.logs = logs
11+
exports[logName] = logs
1212
}

packages/@vue/cli-shared-utils/lib/logger.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,5 @@ exports.clearConsole = title => {
4545

4646
// silent all logs except errors during tests and keep record
4747
if (process.env.VUE_CLI_TEST) {
48-
require('./_silence')(exports)
48+
require('./_silence')('logs', exports)
4949
}

packages/@vue/cli-shared-utils/lib/spinner.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,5 @@ exports.resumeSpinner = () => {
4545

4646
// silent all logs except errors during tests and keep record
4747
if (process.env.VUE_CLI_TEST) {
48-
require('./_silence')(exports)
48+
require('./_silence')('spinner', exports)
4949
}

packages/@vue/cli-shared-utils/lib/validate.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@ const { error } = require('./logger')
44
// proxy to joi for option validation
55
exports.createSchema = fn => fn(joi)
66

7-
exports.validate = (obj, schema, options = {}) => {
7+
exports.validate = (obj, schema, options = {}, noExit) => {
88
joi.validate(obj, schema, options, err => {
99
if (err) {
1010
error(`vue-cli options validation failed:\n` + err.message)
11-
process.exit(1)
11+
if (!noExit) {
12+
process.exit(1)
13+
} else {
14+
throw err
15+
}
1216
}
1317
})
1418
}
Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// using this requires mocking fs & inquirer
22

33
const Creator = require('@vue/cli/lib/Creator')
4+
const { loadOptions } = require('@vue/cli/lib/options')
45
const { expectPrompts } = require('inquirer') // from mock
56

67
module.exports = async function assertPromptModule (
@@ -13,7 +14,7 @@ module.exports = async function assertPromptModule (
1314
if (opts.plguinsOnly) {
1415
expectedPrompts.unshift(
1516
{
16-
message: 'project creation mode',
17+
message: 'Please pick a preset',
1718
choose: 1
1819
}
1920
)
@@ -23,23 +24,24 @@ module.exports = async function assertPromptModule (
2324
choose: 1 // package.json
2425
},
2526
{
26-
message: 'package manager',
27-
choose: 0 // yarn
28-
},
29-
{
30-
message: 'Save the preferences',
27+
message: 'Save this as a preset',
3128
confirm: false
3229
}
3330
)
31+
if (!loadOptions().packageManager) {
32+
expectedPrompts.push({
33+
message: 'package manager',
34+
choose: 0 // yarn
35+
})
36+
}
3437
}
3538

3639
expectPrompts(expectedPrompts)
3740
const creator = new Creator('test', '/', [].concat(module))
38-
const options = await creator.promptAndResolveOptions()
41+
const preset = await creator.promptAndResolvePreset()
3942

4043
if (opts.plguinsOnly) {
41-
delete options.packageManager
42-
delete options.useConfigFiles
44+
delete preset.useConfigFiles
4345
}
44-
expect(options).toEqual(expectedOptions)
46+
expect(preset).toEqual(expectedOptions)
4547
}

0 commit comments

Comments
 (0)