2013-07-28 05:04:21 +08:00
|
|
|
module.exports = function( grunt ) {
|
|
|
|
|
|
2013-08-25 14:48:01 +08:00
|
|
|
var fs = require('fs')
|
|
|
|
|
|
2013-07-28 05:04:21 +08:00
|
|
|
grunt.initConfig({
|
|
|
|
|
|
|
|
|
|
component_build: {
|
2013-08-08 20:00:16 +08:00
|
|
|
dev: {
|
2013-07-28 05:04:21 +08:00
|
|
|
output: './dist/',
|
2013-07-29 00:35:03 +08:00
|
|
|
name: 'seed',
|
2013-08-08 03:44:07 +08:00
|
|
|
dev: true,
|
|
|
|
|
sourceUrls: true,
|
2013-07-28 05:04:21 +08:00
|
|
|
styles: false,
|
2013-08-20 05:22:43 +08:00
|
|
|
verbose: true,
|
2013-10-12 06:13:57 +08:00
|
|
|
standalone: 'Seed'
|
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-14 02:51:48 +08:00
|
|
|
output: './dist/',
|
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: {
|
|
|
|
|
src: ['test/e2e/**/*.js', 'test/unit/**/*.js'],
|
|
|
|
|
options: {
|
|
|
|
|
jshintrc: 'test/.jshintrc'
|
2013-07-28 05:04:21 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
mocha: {
|
2013-09-08 13:21:41 +08:00
|
|
|
unit: {
|
|
|
|
|
src: ['test/unit/*.html'],
|
|
|
|
|
options: {
|
|
|
|
|
reporter: 'Spec',
|
|
|
|
|
run: true
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
e2e: {
|
|
|
|
|
src: ['test/e2e/*.html'],
|
2013-07-28 05:04:21 +08:00
|
|
|
options: {
|
|
|
|
|
reporter: 'Spec',
|
|
|
|
|
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-03 03:20:57 +08:00
|
|
|
tasks: ['component_build:dev', 'component_build:test']
|
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-09-08 13:21:41 +08:00
|
|
|
grunt.registerTask( 'test', ['component_build:test', 'mocha'] )
|
2013-08-26 02:58:06 +08:00
|
|
|
grunt.registerTask( 'default', [
|
2013-10-17 23:30:35 +08:00
|
|
|
'jshint:dev',
|
2013-08-26 02:58:06 +08:00
|
|
|
'component_build:build',
|
2013-10-17 23:30:35 +08:00
|
|
|
'jshint:test',
|
2013-08-27 07:28:03 +08:00
|
|
|
'test',
|
2013-08-26 02:58:06 +08:00
|
|
|
'uglify'
|
|
|
|
|
])
|
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-07-28 05:04:21 +08:00
|
|
|
|
|
|
|
|
}
|