Skip to content

Commit 4a94053

Browse files
committed
use dist branch from template if it exists
1 parent 175b5da commit 4a94053

File tree

2 files changed

+60
-19
lines changed

2 files changed

+60
-19
lines changed

bin/vue-init

Lines changed: 59 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ var uid = require('uid')
99
var ora = require('ora')
1010
var chalk = require('chalk')
1111
var inquirer = require('inquirer')
12+
var request = require('request')
1213
var logger = require('../lib/logger')
1314
var generate = require('../lib/generate')
1415
var checkVersion = require('../lib/check-version')
@@ -96,25 +97,65 @@ function run () {
9697
logger.success('Generated "%s".', name)
9798
})
9899
} else {
99-
// use official templates
100-
if (!hasSlash) {
101-
template = 'vuejs-templates/' + template
102-
}
103100
checkVersion(function () {
104-
// download and generate
105-
var tmp = '/tmp/vue-template-' + uid()
106-
var spinner = ora('downloading template')
107-
spinner.start()
108-
download(template, tmp, { clone: clone }, function (err) {
109-
spinner.stop()
110-
if (err) logger.fatal(err)
111-
generate(name, tmp, to, function (err) {
112-
if (err) logger.fatal(err)
113-
rm(tmp)
114-
console.log()
115-
logger.success('Generated "%s".', name)
116-
})
117-
})
101+
if (!hasSlash) {
102+
// use official templates
103+
template = 'vuejs-templates/' + template
104+
checkDistBranch(template, downloadAndGenerate)
105+
} else {
106+
downloadAndGenerate(template)
107+
}
118108
})
119109
}
120110
}
111+
112+
/**
113+
* Check if the template has a dist branch, if yes, use that.
114+
*
115+
* @param {String} template
116+
* @param {Function} cb
117+
*/
118+
119+
function checkDistBranch (template, cb) {
120+
request({
121+
url: 'https://api.github.com/repos/' + template + '/branches',
122+
headers: {
123+
'User-Agent': 'vue-cli'
124+
}
125+
}, function (err, res, body) {
126+
if (err) logger.fatal(err)
127+
if (res.statusCode !== 200) {
128+
return cb(template)
129+
} else {
130+
var hasDist = JSON.parse(body).some(function (branch) {
131+
return branch.name === 'dist'
132+
})
133+
if (!hasDist) {
134+
console.log(JSON.parse(body))
135+
}
136+
return cb(hasDist ? template + '#dist' : template)
137+
}
138+
})
139+
}
140+
141+
/**
142+
* Download a generate from a template repo.
143+
*
144+
* @param {String} template
145+
*/
146+
147+
function downloadAndGenerate (template) {
148+
var tmp = '/tmp/vue-template-' + uid()
149+
var spinner = ora('downloading template')
150+
spinner.start()
151+
download(template, tmp, { clone: clone }, function (err) {
152+
spinner.stop()
153+
if (err) logger.fatal(err)
154+
generate(name, tmp, to, function (err) {
155+
if (err) logger.fatal(err)
156+
rm(tmp)
157+
console.log()
158+
logger.success('Generated "%s".', name)
159+
})
160+
})
161+
}

lib/check-version.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var chalk = require('chalk')
44

55
module.exports = function (done) {
66
request({
7-
url: 'http://registry.npmjs.org/vue-cli',
7+
url: 'https://registry.npmjs.org/vue-cli',
88
timeout: 1000
99
}, function (err, res, body) {
1010
if (!err && res.statusCode === 200) {

0 commit comments

Comments
 (0)