0
0
Fork 0
mirror of https://github.com/liabru/matter-js.git synced 2024-11-23 09:26:51 -05:00
liabru-matter-js/Gruntfile.js

227 lines
6.4 KiB
JavaScript
Raw Normal View History

2014-02-19 09:15:05 -05:00
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
buildName: 'matter',
buildVersion: 'edge-master',
2014-03-10 21:17:41 -04:00
docVersion: 'v<%= pkg.version %>',
2015-06-04 15:54:50 -04:00
browserify: {
options: {
2015-08-17 18:30:25 -04:00
banner: '/**\n* <%= buildName %>.js <%= buildVersion %> <%= grunt.template.today("yyyy-mm-dd") %>\n* <%= pkg.homepage %>\n* License: <%= pkg.license %>\n*/\n\n' + grunt.file.read('src/module/license.js') + '\n\n',
browserifyOptions: {
2015-08-17 16:02:41 -04:00
standalone: 'Matter'
}
2014-02-19 09:15:05 -05:00
},
2015-06-04 15:54:50 -04:00
'build/<%= buildName %>.js': ['src/module/main.js']
2014-02-19 09:15:05 -05:00
},
uglify: {
min: {
options: {
banner: '/**\n* <%= buildName %>.min.js <%= buildVersion %> <%= grunt.template.today("yyyy-mm-dd") %>\n* <%= pkg.homepage %>\n* License: <%= pkg.license %>\n*/\n\n'
},
src: 'build/<%= buildName %>.js',
dest: 'build/<%= buildName %>.min.js'
},
dev: {
options: {
mangle: false,
compress: false,
preserveComments: false,
beautify: {
width: 32000,
indent_level: 2,
space_colon: false,
beautify: true
},
banner: '/**\n* <%= buildName %>.min.js <%= buildVersion %> <%= grunt.template.today("yyyy-mm-dd") %>\n* <%= pkg.homepage %>\n* License: <%= pkg.license %>\n*/\n\n'
},
src: 'build/<%= buildName %>.js',
dest: 'build/<%= buildName %>.js'
2014-02-19 09:15:05 -05:00
}
},
2015-08-25 14:12:52 -04:00
concat: {
examples: {
src: 'examples/**/*.js',
dest: 'demo/js/Examples.js'
}
},
2014-02-19 09:15:05 -05:00
copy: {
demo: {
2015-06-04 15:54:50 -04:00
src: 'build/<%= buildName %>.js',
dest: 'demo/js/lib/<%= buildName %>.js'
}
2014-02-19 09:15:05 -05:00
},
jshint: {
options: {
jshintrc: '.jshintrc'
},
2015-08-25 14:12:52 -04:00
all: ['src/**/*.js', 'demo/js/*.js', 'examples/*.js', 'test/browser/TestDemo.js', 'test/node/TestDemo.js', '!src/module/*', '!demo/js/Examples.js']
2014-02-19 09:15:05 -05:00
},
connect: {
watch: {
options: {
port: 9000,
open: 'http://localhost:9000/demo/dev.html',
2014-02-19 09:15:05 -05:00
livereload: 9001
}
2015-08-04 14:53:15 -04:00
},
serve: {
options: {
port: 8000
2015-08-04 14:53:15 -04:00
}
2014-02-19 09:15:05 -05:00
}
},
watch: {
options: {
livereload: {
port: 9001
}
},
src: {
files: ['src/**/*.js'],
2014-03-12 05:35:36 -04:00
tasks: ['build:dev']
2014-02-19 09:15:05 -05:00
},
demo: {
files: ['build/matter.js', 'demo/js/**/*.html', 'demo/js/**/*.js', 'demo/css/**/*.css']
2015-08-25 14:12:52 -04:00
},
examples: {
files: ['examples/**/*.js'],
tasks: ['concat:examples']
2014-02-19 09:15:05 -05:00
}
},
2014-02-28 13:23:25 -05:00
yuidoc: {
compile: {
2014-03-10 21:17:41 -04:00
name: '<%= pkg.name %>.js Physics Engine API Documentation for <%= docVersion %>',
2014-02-28 13:23:25 -05:00
description: '<%= pkg.description %>',
2014-03-10 21:17:41 -04:00
version: '<%= docVersion %>',
2014-02-28 13:23:25 -05:00
url: '<%= pkg.homepage %>',
options: {
paths: 'src',
themedir: 'matter-doc-theme',
outdir: 'doc',
linkNatives: true
}
}
},
preprocess: {
options: {
inline: true,
context : {
DEBUG: false
}
},
js: {
src: 'build/<%= buildName %>.js',
dest: 'build/<%= buildName %>.js'
}
2015-08-03 16:00:54 -04:00
},
shell: {
2015-08-16 19:50:23 -04:00
testDemoBrowser: {
2015-08-03 19:37:40 -04:00
command: function(arg) {
arg = arg ? ' --' + arg : '';
2015-08-04 15:25:20 -04:00
return 'phantomjs test/browser/TestDemo.js' + arg;
2015-08-03 19:37:40 -04:00
},
2015-08-03 16:00:54 -04:00
options: {
execOptions: {
timeout: 1000 * 60
}
}
2015-08-16 19:50:23 -04:00
},
testDemoNode: {
command: function(arg) {
arg = arg ? ' --' + arg : '';
return 'node test/node/TestDemo.js' + arg;
},
options: {
execOptions: {
timeout: 1000 * 60
}
}
2015-08-03 16:00:54 -04:00
}
2014-02-28 13:23:25 -05:00
}
2014-02-19 09:15:05 -05:00
});
2015-06-04 15:54:50 -04:00
grunt.loadNpmTasks('grunt-browserify');
2015-08-25 14:12:52 -04:00
grunt.loadNpmTasks('grunt-contrib-concat');
2014-02-19 09:15:05 -05:00
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-copy');
2014-02-28 13:23:25 -05:00
grunt.loadNpmTasks('grunt-contrib-yuidoc');
grunt.loadNpmTasks('grunt-preprocess');
2015-08-03 16:00:54 -04:00
grunt.loadNpmTasks('grunt-shell');
2014-02-19 09:15:05 -05:00
2015-08-25 14:12:52 -04:00
grunt.registerTask('default', ['concat:examples', 'test', 'build']);
2015-08-16 19:50:23 -04:00
grunt.registerTask('test', ['build:dev', 'connect:serve', 'jshint', 'test:demo', 'test:demoNode']);
2015-08-25 14:31:44 -04:00
grunt.registerTask('dev', ['concat:examples', 'build:dev', 'connect:watch', 'watch']);
2015-08-04 14:53:15 -04:00
grunt.registerTask('test:demo', function() {
2015-08-03 19:37:40 -04:00
var updateAll = grunt.option('updateAll'),
diff = grunt.option('diff');
if (updateAll) {
2015-08-16 19:50:23 -04:00
grunt.task.run('shell:testDemoBrowser:updateAll');
} else if (diff) {
grunt.task.run('shell:testDemoBrowser:diff');
} else {
grunt.task.run('shell:testDemoBrowser');
}
});
grunt.registerTask('test:demoNode', function() {
var updateAll = grunt.option('updateAll'),
diff = grunt.option('diff');
if (updateAll) {
grunt.task.run('shell:testDemoNode:updateAll');
2015-08-03 19:37:40 -04:00
} else if (diff) {
2015-08-16 19:50:23 -04:00
grunt.task.run('shell:testDemoNode:diff');
2015-08-03 19:37:40 -04:00
} else {
2015-08-16 19:50:23 -04:00
grunt.task.run('shell:testDemoNode');
2015-08-03 19:37:40 -04:00
}
});
2014-03-12 05:35:36 -04:00
grunt.registerTask('build', function(mode) {
var isDev = (mode === 'dev'),
isRelease = (mode === 'release'),
isEdge = (mode === 'edge'),
pkg = grunt.file.readJSON('package.json'),
uglifyTask;
// development build mode
if (isDev) {
grunt.config.set('buildName', 'matter-dev');
grunt.config.set('buildVersion', pkg.version + '-dev');
2015-06-04 15:54:50 -04:00
grunt.task.run('browserify', 'uglify:dev', 'uglify:min', 'copy');
}
// release build mode
if (isRelease) {
grunt.config.set('buildName', 'matter-' + pkg.version);
grunt.config.set('buildVersion', pkg.version + '-alpha');
2015-06-04 15:54:50 -04:00
grunt.task.run('browserify', 'uglify:min', 'copy');
}
// edge build mode (default)
if (isEdge || (!isDev && !isRelease)) {
grunt.config.set('buildVersion', 'edge-master');
2015-06-04 15:54:50 -04:00
grunt.task.run('browserify', 'preprocess', 'uglify:min');
}
});
2014-03-10 21:17:41 -04:00
2014-03-23 19:07:04 -04:00
grunt.registerTask('doc', function(mode) {
var isDev = (mode === 'dev'),
isRelease = (mode === 'release'),
isEdge = (mode === 'edge');
if (isEdge)
2014-03-10 21:17:41 -04:00
grunt.config.set('docVersion', 'edge version (master)');
2015-06-04 15:54:50 -04:00
2014-03-10 21:17:41 -04:00
grunt.task.run('yuidoc');
});
grunt.registerTask('set_config', 'Set a config property.', function(name, val) {
grunt.config.set(name, val);
});
2015-06-04 15:54:50 -04:00
};