Skip to content

Commit aa06f9a

Browse files
committed
Add validation for package name in vue init
1 parent cfaa340 commit aa06f9a

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

lib/ask.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ function prompt (data, key, prompt, done) {
4141
name: key,
4242
message: prompt.message || prompt.label || key,
4343
default: prompt.default,
44-
choices: prompt.choices || []
44+
choices: prompt.choices || [],
45+
validate: prompt.validate || function () { return true }
4546
}], function (answers) {
4647
if (Array.isArray(answers[key])) {
4748
data[key] = {}

lib/options.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ var path = require('path')
22
var metadata = require('read-metadata')
33
var exists = require('fs').existsSync
44
var getGitUser = require('./git-user')
5+
var validateName = require('validate-npm-package-name')
56

67
/**
78
* Read prompts metadata.
@@ -17,6 +18,7 @@ module.exports = function options (name, dir) {
1718
: {}
1819

1920
setDefault(opts, 'name', name)
21+
setValidateName(opts)
2022

2123
var author = getGitUser()
2224
if (author) {
@@ -49,3 +51,14 @@ function setDefault (opts, key, val) {
4951
prompts[key]['default'] = val
5052
}
5153
}
54+
55+
function setValidateName (opts) {
56+
opts.prompts.name.validate = function (name) {
57+
var its = validateName(name)
58+
if (!its.validForNewPackages) {
59+
var errors = (its.errors || []).concat(its.warnings || [])
60+
return 'Sorry, ' + errors.join(' and ') + '.'
61+
}
62+
return true
63+
}
64+
}

0 commit comments

Comments
 (0)