2013-10-24 06:19:23 +08:00
|
|
|
var fs = require('fs'),
|
|
|
|
|
path = require('path')
|
2013-07-28 05:04:21 +08:00
|
|
|
|
2013-10-24 06:19:23 +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: {
|
2013-08-08 20:00:16 +08:00
|
|
|
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'
|
2013-09-08 13:21:41 +08:00
|
|
|
},
|
|
|
|
|
test: {
|
2013-10-31 05:40:58 +08:00
|
|
|
output: './test/',
|
2013-09-08 13:21:41 +08:00
|
|
|
name: 'seed.test',
|
|
|
|
|
styles: false
|
2013-07-28 05:04:21 +08:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
jshint: {
|
2013-10-17 23:30:35 +08:00
|
|
|
dev: {
|
2013-07-28 05:04:21 +08:00
|
|
|
src: ['src/**/*.js'],
|
|
|
|
|
options: {
|
2013-10-08 13:14:40 +08:00
|
|
|
jshintrc: './.jshintrc'
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
test: {
|
2013-10-24 06:19:23 +08:00
|
|
|
src: ['test/unit/specs/*.js', 'test/functional/specs/*.js'],
|
2013-10-08 13:14:40 +08:00
|
|
|
options: {
|
|
|
|
|
jshintrc: 'test/.jshintrc'
|
2013-07-28 05:04:21 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
mocha: {
|
2013-10-24 06:19:23 +08:00
|
|
|
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,
|
2013-10-19 04:47:04 +08:00
|
|
|
mangle: true,
|
|
|
|
|
banner:
|
2013-10-19 05:41:22 +08:00
|
|
|
'// 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'],
|
2013-10-24 06:19:23 +08:00
|
|
|
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) {
|
2013-10-19 05:58:23 +08:00
|
|
|
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
|
|
|
})
|
2013-10-24 06:19:23 +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/'],
|
2013-10-24 06:19:23 +08:00
|
|
|
opts: {
|
|
|
|
|
stdio: 'inherit',
|
|
|
|
|
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')
|
2013-10-24 06:19:23 +08:00
|
|
|
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'
|
|
|
|
|
])
|
2013-10-24 06:19:23 +08:00
|
|
|
|
|
|
|
|
grunt.registerTask( 'default', [
|
|
|
|
|
'jshint:dev',
|
|
|
|
|
'jshint:test',
|
|
|
|
|
'test',
|
|
|
|
|
'uglify'
|
|
|
|
|
])
|
2013-07-28 05:04:21 +08:00
|
|
|
|
|
|
|
|
}
|