vue2/Gruntfile.js

163 lines
4.6 KiB
JavaScript
Raw Normal View History

var fs = require('fs'),
path = require('path'),
stream = require('stream')
2013-07-28 05:04:21 +08:00
module.exports = function( grunt ) {
2013-08-25 14:48:01 +08:00
2013-07-28 05:04:21 +08:00
grunt.initConfig({
component_build: {
build: {
output: './dist/',
name: 'seed',
2013-08-20 05:22:43 +08:00
styles: false,
2013-10-12 06:13:57 +08:00
standalone: 'Seed'
},
test: {
2013-10-31 05:40:58 +08:00
output: './test/',
name: 'seed.test',
styles: false
2013-07-28 05:04:21 +08:00
}
},
jshint: {
2013-11-03 08:43:07 +08:00
options: {
reporter: require('jshint-stylish')
},
2013-10-17 23:30:35 +08:00
dev: {
2013-07-28 05:04:21 +08:00
src: ['src/**/*.js'],
options: {
jshintrc: './.jshintrc'
}
},
test: {
src: ['test/unit/specs/*.js', 'test/functional/specs/*.js'],
options: {
jshintrc: 'test/.jshintrc'
2013-07-28 05:04:21 +08:00
}
}
},
mocha: {
test: {
src: ['test/unit/runner.html'],
2013-07-28 05:04:21 +08:00
options: {
2013-10-31 05:40:58 +08:00
log: true,
2013-07-28 05:04:21 +08:00
run: true
}
}
},
2013-08-08 03:44:07 +08:00
uglify: {
build: {
options: {
compress: true,
mangle: true,
banner:
'// Seed.js ' + require('./package.json').version + '\n' +
'// (c) 2013 Evan You\n' +
'// https://github.com/yyx990803/seed\n'
2013-08-08 03:44:07 +08:00
},
files: {
'dist/seed.min.js': 'dist/seed.js'
}
}
},
2013-07-28 05:04:21 +08:00
watch: {
2013-07-29 11:23:56 +08:00
options: {
livereload: true
},
2013-07-28 05:04:21 +08:00
component: {
files: ['src/**/*.js', 'component.json'],
tasks: ['component_build']
2013-07-28 05:04:21 +08:00
}
}
})
grunt.loadNpmTasks( 'grunt-contrib-watch' )
grunt.loadNpmTasks( 'grunt-contrib-jshint' )
2013-08-08 03:44:07 +08:00
grunt.loadNpmTasks( 'grunt-contrib-uglify' )
2013-07-28 05:04:21 +08:00
grunt.loadNpmTasks( 'grunt-component-build' )
grunt.loadNpmTasks( 'grunt-mocha' )
2013-08-10 18:52:14 +08:00
grunt.registerTask( 'version', function (version) {
;['package', 'bower', 'component'].forEach(function (file) {
file = './' + file + '.json'
var json = fs.readFileSync(file, 'utf-8')
json = json.replace(/"version"\s*:\s*"(.+?)"/, '"version": "' + version + '"')
fs.writeFileSync(file, json)
})
})
grunt.registerTask( 'release', function (version) {
if (!version || !isValid(version)) {
return grunt.fail.warn('Must provide a valid semver version number.')
}
grunt.task.run(['version:' + version, 'default'])
function isValid (v) {
var nums = v.split('.')
if (nums.length !== 3) return false
var current = require('./package.json').version.split('.'),
a1 = +nums[0],
b1 = +nums[1],
c1 = +nums[2],
a2 = +current[0],
b2 = +current[1],
c2 = +current[2]
if (a1 < a2) return false
if (a1 === a2 && b1 < b2) return false
if (a1 === a2 && b1 === b2 && c1 < c2) return false
return true
}
2013-08-10 18:52:14 +08:00
})
grunt.registerTask( 'casper', function () {
var done = this.async()
grunt.util.spawn({
cmd: 'casperjs',
2013-10-31 05:40:58 +08:00
args: ['test', '--concise', 'specs/'],
opts: {
stdio: ['ignore', process.stdout, 'ignore'],
cwd: path.resolve('test/functional')
}
}, function (err, res) {
2013-10-29 01:22:16 +08:00
if (err) grunt.fail.fatal(res.stdout || 'CasperJS test failed')
grunt.log.writeln(res.stdout)
done()
})
})
2013-10-31 05:40:58 +08:00
grunt.registerTask( 'jsc', function () {
var done = this.async()
grunt.util.spawn({
cmd: './node_modules/jscoverage/bin/jscoverage',
args: ['./test/seed.test.js'],
opts: {
stdio: 'inherit'
}
}, function (err, res) {
if (err) grunt.fail.fatal(res.stdout || 'Jscoverage instrumentation failed')
grunt.log.writeln(res.stdout)
fs.unlinkSync('./test/seed.test.js')
done()
})
})
grunt.registerTask( 'test', [
'component_build',
'jsc',
'mocha',
'casper'
])
grunt.registerTask( 'default', [
'jshint:dev',
'jshint:test',
'test',
'uglify'
])
2013-07-28 05:04:21 +08:00
}