2013-06-01 15:53:32 +08:00
module . exports = function ( grunt ) {
2013-06-02 06:41:25 +08:00
var sourceFiles = [
2014-01-01 05:04:05 +08:00
// core
2014-02-27 08:49:18 +08:00
'src/Global.js' ,
'src/Util.js' ,
2013-06-02 06:41:25 +08:00
'src/Canvas.js' ,
2013-09-01 12:49:18 +08:00
'src/Context.js' ,
2013-08-11 12:11:34 +08:00
'src/Factory.js' ,
2014-02-27 08:49:18 +08:00
'src/Node.js' ,
2014-01-01 05:04:05 +08:00
2014-01-05 15:34:01 +08:00
// filters
2014-02-27 08:49:18 +08:00
'src/filters/Grayscale.js' ,
'src/filters/Brighten.js' ,
'src/filters/Invert.js' ,
'src/filters/Blur.js' ,
2014-01-01 05:04:05 +08:00
'src/filters/Mask.js' ,
2014-01-04 12:25:35 +08:00
'src/filters/RGB.js' ,
'src/filters/HSV.js' ,
2014-02-01 05:49:11 +08:00
'src/filters/HSL.js' ,
2014-01-04 21:21:44 +08:00
'src/filters/Emboss.js' ,
2014-01-03 13:12:41 +08:00
'src/filters/Enhance.js' ,
2014-01-04 15:23:53 +08:00
'src/filters/Posterize.js' ,
2014-01-01 05:04:05 +08:00
'src/filters/Noise.js' ,
'src/filters/Pixelate.js' ,
'src/filters/Threshold.js' ,
'src/filters/Sepia.js' ,
2014-01-04 21:34:36 +08:00
'src/filters/Solarize.js' ,
2014-01-07 16:43:31 +08:00
'src/filters/Kaleidoscope.js' ,
2014-01-05 15:34:01 +08:00
2014-01-01 05:04:05 +08:00
// core
2014-02-27 08:49:18 +08:00
'src/Animation.js' ,
'src/Tween.js' ,
'src/DragAndDrop.js' ,
'src/Container.js' ,
'src/Shape.js' ,
'src/Stage.js' ,
2014-03-21 02:15:55 +08:00
'src/BaseLayer.js' ,
2014-02-27 08:49:18 +08:00
'src/Layer.js' ,
2014-03-09 10:05:14 +08:00
'src/FastLayer.js' ,
2013-06-02 06:41:25 +08:00
'src/Group.js' ,
// shapes
2014-02-27 08:49:18 +08:00
'src/shapes/Rect.js' ,
'src/shapes/Circle.js' ,
2013-06-07 13:07:53 +08:00
'src/shapes/Ellipse.js' ,
2013-12-13 15:07:16 +08:00
'src/shapes/Ring.js' ,
2014-02-27 08:49:18 +08:00
'src/shapes/Wedge.js' ,
2013-12-13 13:20:29 +08:00
'src/shapes/Arc.js' ,
2014-02-27 08:49:18 +08:00
'src/shapes/Image.js' ,
'src/shapes/Text.js' ,
'src/shapes/Line.js' ,
2013-06-02 06:41:25 +08:00
'src/shapes/Sprite.js' ,
// plugins
2014-02-27 08:49:18 +08:00
'src/plugins/Path.js' ,
'src/plugins/TextPath.js' ,
'src/plugins/RegularPolygon.js' ,
'src/plugins/Star.js' ,
2014-08-27 12:43:33 +08:00
'src/plugins/Label.js' ,
'src/plugins/Arrow.js'
2013-06-02 06:41:25 +08:00
] ;
2013-06-01 15:53:32 +08:00
// Project configuration.
2014-02-28 11:15:18 +08:00
var hintConf = grunt . file . readJSON ( '.jshintrc' ) ;
2013-06-02 06:41:25 +08:00
var config = {
2013-06-01 15:53:32 +08:00
pkg : grunt . file . readJSON ( 'package.json' ) ,
concat : {
options : {
separator : ';'
} ,
2013-07-28 12:09:33 +08:00
dev : {
src : sourceFiles ,
dest : 'dist/kinetic-dev.js'
} ,
beta : {
src : sourceFiles ,
dest : 'dist/kinetic-v<%= pkg.version %>-beta.js'
} ,
prod : {
2013-06-02 06:41:25 +08:00
src : sourceFiles ,
2013-06-01 15:53:32 +08:00
dest : 'dist/kinetic-v<%= pkg.version %>.js'
}
} ,
replace : {
2013-06-02 06:41:25 +08:00
dev : {
2013-07-28 12:09:33 +08:00
options : {
variables : {
version : 'dev' ,
date : '<%= grunt.template.today("yyyy-mm-dd") %>' ,
2015-01-09 22:52:27 +08:00
nodeParams : '<%= grunt.file.read("resources/doc-includes/NodeParams.txt") %>' ,
containerParams : '<%= grunt.file.read("resources/doc-includes/ContainerParams.txt") %>' ,
shapeParams : '<%= grunt.file.read("resources/doc-includes/ShapeParams.txt") %>'
2013-07-28 12:09:33 +08:00
} ,
prefix : '@@'
} ,
files : [ {
2014-02-27 08:49:18 +08:00
src : [ 'dist/kinetic-dev.js' ] ,
2013-07-28 12:09:33 +08:00
dest : 'dist/kinetic-dev.js'
} ]
} ,
2013-07-28 14:26:06 +08:00
beta : {
options : {
variables : {
version : '<%= pkg.version %>-beta' ,
date : '<%= grunt.template.today("yyyy-mm-dd") %>' ,
2015-01-09 22:52:27 +08:00
nodeParams : '<%= grunt.file.read("resources/doc-includes/NodeParams.txt") %>' ,
containerParams : '<%= grunt.file.read("resources/doc-includes/ContainerParams.txt") %>' ,
shapeParams : '<%= grunt.file.read("resources/doc-includes/ShapeParams.txt") %>'
2013-07-28 14:26:06 +08:00
} ,
prefix : '@@'
} ,
files : [ {
2014-02-27 08:49:18 +08:00
src : [ 'dist/kinetic-v<%= pkg.version %>-beta.js' ] ,
2013-07-28 14:26:06 +08:00
dest : 'dist/kinetic-v<%= pkg.version %>-beta.js'
} ]
} ,
2013-07-28 12:09:33 +08:00
prod1 : {
2013-06-01 15:53:32 +08:00
options : {
variables : {
2013-06-02 01:27:44 +08:00
version : '<%= pkg.version %>' ,
date : '<%= grunt.template.today("yyyy-mm-dd") %>' ,
2015-01-09 22:52:27 +08:00
nodeParams : '<%= grunt.file.read("resources/doc-includes/NodeParams.txt") %>' ,
containerParams : '<%= grunt.file.read("resources/doc-includes/ContainerParams.txt") %>' ,
shapeParams : '<%= grunt.file.read("resources/doc-includes/ShapeParams.txt") %>'
2013-06-01 15:53:32 +08:00
} ,
prefix : '@@'
} ,
2013-06-02 06:41:25 +08:00
files : [ {
2014-02-27 08:49:18 +08:00
src : [ 'dist/kinetic-v<%= pkg.version %>.js' ] ,
2013-06-02 06:41:25 +08:00
dest : 'dist/kinetic-v<%= pkg.version %>.js'
} ]
} ,
2013-07-28 12:09:33 +08:00
prod2 : {
2013-06-02 06:41:25 +08:00
options : {
variables : {
2015-01-09 22:52:27 +08:00
version : '<%= pkg.version %>'
2013-06-02 06:41:25 +08:00
} ,
prefix : '@@'
} ,
files : [ {
2014-02-27 08:49:18 +08:00
src : [ 'dist/kinetic-Global-v<%= pkg.version %>.min.js' ] ,
2013-06-02 06:41:25 +08:00
dest : 'dist/kinetic-Global-v<%= pkg.version %>.min.js'
} ]
2013-07-28 12:09:33 +08:00
} ,
prod3 : {
options : {
variables : {
2015-01-09 22:52:27 +08:00
version : '<%= pkg.version %>'
2013-07-28 12:09:33 +08:00
} ,
prefix : '@@'
} ,
files : [ {
2014-02-27 08:49:18 +08:00
src : [ 'dist/kinetic-v<%= pkg.version %>.min.js' ] ,
2013-07-28 12:09:33 +08:00
dest : 'dist/kinetic-v<%= pkg.version %>.min.js'
} ]
2014-01-20 13:51:06 +08:00
} ,
2015-01-09 23:45:45 +08:00
updateBower : {
2014-01-20 13:51:06 +08:00
options : {
variables : {
2015-01-09 22:52:27 +08:00
version : '<%= pkg.version %>'
2014-01-20 13:51:06 +08:00
} ,
prefix : '@@'
} ,
files : [ {
2015-01-09 23:45:45 +08:00
src : [ 'resources/bower-template.json' ] ,
2014-01-20 13:51:06 +08:00
dest : 'bower.json'
} ]
2013-06-01 15:53:32 +08:00
}
} ,
uglify : {
options : {
2015-01-09 22:52:27 +08:00
banner : '/*! KineticJS v<%= pkg.version %> <%= grunt.template.today("yyyy-mm-dd") %> http://lavrton.github.io/KineticJS/ by Eric Rowell @ericdrowell, Anton Lavrenov @lavrton - MIT License https://github.com/lavrton/KineticJS/wiki/License*/\n'
2013-06-01 15:53:32 +08:00
} ,
build : {
2013-06-02 06:41:25 +08:00
files : {
'dist/kinetic-v<%= pkg.version %>.min.js' : 'dist/kinetic-v<%= pkg.version %>.js'
}
2013-06-01 15:53:32 +08:00
}
2013-06-02 06:41:25 +08:00
} ,
clean : {
build : [ 'dist/*' ]
2013-06-02 07:13:33 +08:00
} ,
jshint : {
2014-02-28 11:15:18 +08:00
options : hintConf ,
2013-06-02 07:13:33 +08:00
all : [ 'src/**/*.js' ]
2014-01-20 13:51:06 +08:00
} ,
copy : {
2014-01-22 12:50:30 +08:00
prod1 : {
2014-01-20 13:51:06 +08:00
nonull : true ,
src : 'dist/kinetic-v<%= pkg.version %>.min.js' ,
2015-01-09 23:45:45 +08:00
dest : 'kinetic.min.js'
2014-01-20 13:51:06 +08:00
} ,
2014-01-22 12:50:30 +08:00
prod2 : {
nonull : true ,
src : 'dist/kinetic-v<%= pkg.version %>.js' ,
2015-01-09 23:45:45 +08:00
dest : 'kinetic.js'
2014-01-22 12:50:30 +08:00
}
2014-02-27 17:56:41 +08:00
} ,
shell : {
jsdoc : {
options : {
stdout : true ,
stderr : true ,
failOnError : true
} ,
2014-03-28 14:34:06 +08:00
command : './node_modules/.bin/jsdoc ./dist/kinetic-v<%= pkg.version %>.js -d ./docs'
2014-02-27 17:56:41 +08:00
}
} ,
mocha _phantomjs : {
all : [ 'test/runner.html' ]
2014-02-27 18:45:28 +08:00
} ,
watch : {
dev : {
files : [ 'src/**/*.js' ] ,
tasks : [ 'dev' ] ,
options : {
2015-01-09 23:45:45 +08:00
spawn : false
}
}
}
2013-06-02 06:41:25 +08:00
} ;
for ( var n = 0 ; n < sourceFiles . length ; n ++ ) {
var inputFile = sourceFiles [ n ] ;
var className = ( inputFile . match ( /[-_\w]+[.][\w]+$/i ) [ 0 ] ) . replace ( '.js' , '' ) ;
var outputFile = 'dist/kinetic-' + className + '-v<%= pkg.version %>.min.js' ;
config . uglify . build . files [ outputFile ] = [ inputFile ] ;
}
grunt . initConfig ( config ) ;
2013-06-01 15:53:32 +08:00
// Tasks
2014-02-27 17:56:41 +08:00
grunt . registerTask ( 'dev' , 'Create dev version' , [ 'clean' , 'concat:dev' , 'replace:dev' ] ) ;
grunt . registerTask ( 'beta' , 'Create beta version' , [ 'clean' , 'concat:beta' , 'replace:beta' ] ) ;
grunt . registerTask ( 'full' , 'Build full version and create min files' , [
2014-02-27 08:49:18 +08:00
'clean' ,
'concat:prod' ,
'uglify' ,
'replace:prod1' ,
'replace:prod2' ,
'replace:prod3' ,
2015-01-09 23:45:45 +08:00
'replace:updateBower' ,
2014-02-27 08:49:18 +08:00
'copy:prod1' ,
2014-01-22 12:50:30 +08:00
'copy:prod2'
] ) ;
2014-02-27 17:56:41 +08:00
2014-03-28 14:34:06 +08:00
grunt . registerTask ( 'docs' , 'Generate docs' , [
2014-02-27 17:56:41 +08:00
'full' ,
2015-01-09 23:45:45 +08:00
'shell:jsdoc'
2014-02-27 17:56:41 +08:00
] ) ;
2014-02-28 11:15:18 +08:00
grunt . registerTask ( 'hint' , 'Check hint errors' , [ 'jshint' ] ) ;
2014-02-27 18:45:28 +08:00
grunt . registerTask ( 'test' , 'Run tests' , [ 'dev' , 'mocha_phantomjs' ] ) ;
2014-03-04 19:35:26 +08:00
grunt . registerTask ( 'node-test' , 'Run tests in pure NodeJS environment' , function ( ) {
grunt . task . run ( 'dev' ) ;
grunt . task . run ( '_run-node-test' ) ;
} ) ;
2014-02-27 18:45:28 +08:00
2014-03-04 19:35:26 +08:00
grunt . registerTask ( 'server' , 'run local server and create dev version' , function ( ) {
2014-02-27 18:45:28 +08:00
grunt . task . run ( 'dev' ) ;
var connect = require ( 'connect' ) ;
connect . createServer (
connect . static ( _ _dirname )
) . listen ( 8080 ) ;
grunt . task . run ( 'watch:dev' ) ;
2014-03-04 19:35:26 +08:00
grunt . log . writeln ( 'Tests server starts on http://localhost:8080/test/runner.html' ) ;
} ) ;
// run pure node tests
grunt . registerTask ( '_run-node-test' , function ( ) {
require ( './test/node-runner' ) ;
2014-02-27 18:45:28 +08:00
} ) ;
2014-02-27 17:56:41 +08:00
grunt . loadNpmTasks ( 'grunt-contrib-concat' ) ;
grunt . loadNpmTasks ( 'grunt-replace' ) ;
grunt . loadNpmTasks ( 'grunt-contrib-uglify' ) ;
grunt . loadNpmTasks ( 'grunt-contrib-clean' ) ;
grunt . loadNpmTasks ( 'grunt-contrib-jshint' ) ;
grunt . loadNpmTasks ( 'grunt-contrib-copy' ) ;
grunt . loadNpmTasks ( 'grunt-shell' ) ;
grunt . loadNpmTasks ( 'grunt-mocha-phantomjs' ) ;
2014-02-27 18:45:28 +08:00
grunt . loadNpmTasks ( 'grunt-contrib-watch' ) ;
2013-07-12 09:02:51 +08:00
} ;