phaser/GruntFile.js
2013-06-26 14:18:48 +01:00

112 lines
3.3 KiB
JavaScript

module.exports = function (grunt) {
grunt.loadNpmTasks('grunt-typescript');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-copy');
var wrapPhaserInUmd = function(content, isAddon) {
var replacement = [
'(function (root, factory) {',
' if (typeof exports === \'object\') {',
' module.exports = factory();',
' } else if (typeof define === \'function\' && define.amd) {',
' define(factory);',
' } else {',
' root.Phaser = factory();',
' }',
'}(this, function () {',
content,
'return Phaser;',
'}));'
];
return replacement.join('\n');
};
var wrapAddonInUmd = function(content) {
var replacement = [
'(function (root, factory) {',
' if (typeof exports === \'object\') {',
' module.exports = factory(require(\'phaser\'));',
' } else if (typeof define === \'function\' && define.amd) {',
' define([\'phaser\'], factory);',
' } else {',
' factory(root.Phaser);',
' }',
'}(this, function (Phaser) {',
content,
'return Phaser;',
'}));'
];
return replacement.join('\n');
};
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
typescript: {
base: {
src: ['Phaser/**/*.ts'],
dest: 'build/phaser.js',
options: {
target: 'ES5',
declaration: true,
comments: true
}
},
//tests: {
// src: ['Tests/**/*.ts'],
// options: {
// target: 'ES5',
// declaration: true,
// comments: true
// }
// }
//fx: {
// src: ['SpecialFX/**/*.ts'],
// dest: 'build/phaser-fx.js',
// options: {
// target: 'ES5',
// declaration: true,
// comments: true
// }
//}
},
copy: {
main: {
files: [{
src: 'build/phaser.js',
dest: 'Tests/phaser.js'
}]
},
fx: {
files: [{
src: 'build/phaser-fx.js',
dest: 'Tests/phaser-fx.js'
}]
},
mainAmd: {
files: [{
src: 'build/phaser.js',
dest: 'build/phaser.amd.js'
}],
options: {
processContent: wrapPhaserInUmd
}
},
fxAmd: {
files: [{
src: 'build/phaser-fx.js',
dest: 'build/phaser-fx.amd.js'
}],
options: {
processContent: wrapAddonInUmd
}
}
},
watch: {
files: '**/*.ts',
tasks: ['typescript', 'copy']
}
});
grunt.registerTask('default', ['typescript', 'copy', 'watch']);
}