Skip to content

Commit 0d3248d

Browse files
committed
grunt tasks update
1 parent 216e398 commit 0d3248d

File tree

4 files changed

+113
-56
lines changed

4 files changed

+113
-56
lines changed

Gruntfile.js

Lines changed: 10 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ module.exports = function( grunt ) {
66

77
grunt.initConfig({
88

9+
pkg: grunt.file.readJSON('package.json'),
10+
911
componentbuild: {
1012
build: {
1113
options: {
@@ -53,9 +55,11 @@ module.exports = function( grunt ) {
5355
compress: true,
5456
mangle: true,
5557
banner:
56-
'// Vue.js - v' + require('./package.json').version + '\n' +
57-
'// (c) 2013 Evan You\n' +
58-
'// https://github.com/yyx990803/vue\n'
58+
'/*\n' +
59+
' VueJS v<%= version %>\n' +
60+
' (c) 2013 Evan You\n' +
61+
' License: MIT\n' +
62+
'*/\n'
5963
},
6064
files: {
6165
'dist/vue.min.js': 'dist/vue.js'
@@ -78,57 +82,8 @@ module.exports = function( grunt ) {
7882
grunt.loadNpmTasks( 'grunt-component-build' )
7983
grunt.loadNpmTasks( 'grunt-mocha' )
8084

81-
grunt.registerTask( 'version', function (version) {
82-
if (!version || !semver.valid(version)) {
83-
return grunt.fail.warn('Invalid semver version.')
84-
}
85-
var current = require('./package.json').version
86-
if (semver.lt(version, current)) {
87-
return grunt.fail.warn('Version is older than current.')
88-
}
89-
;['package', 'bower', 'component'].forEach(function (file) {
90-
file = './' + file + '.json'
91-
var json = fs.readFileSync(file, 'utf-8')
92-
json = json.replace(/"version"\s*:\s*"(.+?)"/, '"version": "' + version + '"')
93-
fs.writeFileSync(file, json)
94-
})
95-
})
96-
97-
grunt.registerTask( 'release', function (version) {
98-
grunt.task.run(['default', 'version:' + version])
99-
})
100-
101-
grunt.registerTask( 'casper', function (id) {
102-
var done = this.async(),
103-
file = id ? id + '.js' : ''
104-
grunt.util.spawn({
105-
cmd: 'casperjs',
106-
args: ['test', '--concise', 'specs/' + file],
107-
opts: {
108-
stdio: ['ignore', process.stdout, 'ignore'],
109-
cwd: path.resolve('test/functional')
110-
}
111-
}, function (err, res) {
112-
if (err) grunt.fail.fatal(res.stdout || 'CasperJS test failed')
113-
grunt.log.writeln(res.stdout)
114-
done()
115-
})
116-
})
117-
118-
grunt.registerTask( 'jsc', function () {
119-
var done = this.async()
120-
grunt.util.spawn({
121-
cmd: './node_modules/jscoverage/bin/jscoverage',
122-
args: ['./test/vue.test.js'],
123-
opts: {
124-
stdio: 'inherit'
125-
}
126-
}, function (err, res) {
127-
if (err) grunt.fail.fatal(res.stdout || 'Jscoverage instrumentation failed')
128-
grunt.log.writeln(res.stdout)
129-
fs.unlinkSync('./test/vue.test.js')
130-
done()
131-
})
85+
grunt.file.recurse('tasks', function (path) {
86+
require('./' + path)(grunt)
13287
})
13388

13489
grunt.registerTask( 'test', [
@@ -140,8 +95,7 @@ module.exports = function( grunt ) {
14095

14196
grunt.registerTask( 'default', [
14297
'jshint',
143-
'test',
144-
'uglify'
98+
'test'
14599
])
146100

147101
}

tasks/casper.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
var path = require('path')
2+
3+
module.exports = function (grunt) {
4+
grunt.registerTask( 'casper', function (id) {
5+
var done = this.async(),
6+
file = id ? id + '.js' : ''
7+
grunt.util.spawn({
8+
cmd: 'casperjs',
9+
args: ['test', '--concise', 'specs/' + file],
10+
opts: {
11+
stdio: ['ignore', process.stdout, 'ignore'],
12+
cwd: path.resolve('test/functional')
13+
}
14+
}, function (err, res) {
15+
if (err) grunt.fail.fatal(res.stdout || 'CasperJS test failed')
16+
grunt.log.writeln(res.stdout)
17+
done()
18+
})
19+
})
20+
}

tasks/jsc.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
var fs = require('fs')
2+
3+
module.exports = function (grunt) {
4+
grunt.registerTask( 'jsc', function () {
5+
var done = this.async()
6+
grunt.util.spawn({
7+
cmd: './node_modules/jscoverage/bin/jscoverage',
8+
args: ['./test/vue.test.js'],
9+
opts: {
10+
stdio: 'inherit'
11+
}
12+
}, function (err, res) {
13+
if (err) grunt.fail.fatal(res.stdout || 'Jscoverage instrumentation failed')
14+
grunt.log.writeln(res.stdout)
15+
fs.unlinkSync('./test/vue.test.js')
16+
done()
17+
})
18+
})
19+
}

tasks/release.js

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
var semver = require('semver'),
2+
readline = require('readline'),
3+
exec = require('child_process').exec
4+
5+
module.exports = function (grunt) {
6+
7+
grunt.registerTask('version', function (version) {
8+
;['package', 'bower', 'component'].forEach(function (file) {
9+
file = './' + file + '.json'
10+
var json = grunt.file.read(file)
11+
json = json.replace(/"version"\s*:\s*"(.+?)"/, '"version": "' + version + '"')
12+
grunt.file.write(file, json)
13+
})
14+
})
15+
16+
grunt.registerTask('git', function (version) {
17+
exec(
18+
'git add -A;' +
19+
'git commit -m "Release v' + version + '";' +
20+
'git tag v' + version + ';' +
21+
'git push;' +
22+
'git push origin v' + version,
23+
this.async()
24+
)
25+
})
26+
27+
grunt.registerTask('release', function (version) {
28+
29+
var done = this.async(),
30+
current = grunt.config('pkg.version'),
31+
next = semver.inc(current, version || 'patch')
32+
33+
if (!next) {
34+
if (!semver.valid(version)) {
35+
return grunt.fail.warn('Invalid version.')
36+
}
37+
if (semver.lt(version, current)) {
38+
return grunt.fail.warn('Version is older than current.')
39+
}
40+
}
41+
42+
readline.createInterface({
43+
input: process.stdin,
44+
output: process.stdout
45+
}).question('Releasing version v' + next + '. Continue? (Y/n)', function (answer) {
46+
if (!answer || answer.toLowerCase() === 'y') {
47+
console.log(
48+
'\n\x1b[1m\x1b[34m' +
49+
'Releasing: v' + next +
50+
'\x1b[39m\x1b[22m'
51+
)
52+
grunt.config.set('version', next)
53+
grunt.task.run([
54+
'jshint',
55+
'test',
56+
'version:' + next,
57+
'uglify',
58+
'git:' + next
59+
])
60+
}
61+
done()
62+
})
63+
})
64+
}

0 commit comments

Comments
 (0)