Gruntfile.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /*global module:false*/
  2. module.exports = function(grunt) {
  3. var meta = {
  4. banner: '/*\n <%= pkg.title || pkg.name %> <%= pkg.version %>' +
  5. '<%= pkg.homepage ? " <" + pkg.homepage + ">" : "" %>' + '\n' +
  6. ' Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>' +
  7. '\n\n Released under <%= _.pluck(pkg.licenses, "type").join(", ") %> License\n*/\n',
  8. pre: '\n(function(window, document, undefined){\n\n',
  9. post: '\n})(window,document);'
  10. };
  11. // Project configuration.
  12. grunt.initConfig({
  13. pkg: grunt.file.readJSON('package.json'),
  14. qunit: {
  15. files: ['tests/qunit/index.html']
  16. },
  17. concat: {
  18. dist: {
  19. src: [
  20. 'src/Core.js',
  21. 'src/Font.js',
  22. 'src/Generate.js',
  23. 'src/Queue.js',
  24. 'src/Parse.js',
  25. 'src/Preload.js',
  26. 'src/Renderer.js',
  27. 'src/Support.js',
  28. 'src/Util.js',
  29. 'src/renderers/Canvas.js'
  30. ],
  31. dest: 'build/<%= pkg.name %>.js'
  32. },
  33. options:{
  34. banner: meta.banner + meta.pre,
  35. footer: meta.post
  36. }
  37. },
  38. uglify: {
  39. dist: {
  40. src: ['<%= concat.dist.dest %>'],
  41. dest: 'build/<%= pkg.name %>.min.js'
  42. },
  43. options: {
  44. banner: meta.banner
  45. }
  46. },
  47. watch: {
  48. files: 'src/*',
  49. tasks: ['build', 'jshint']
  50. },
  51. jshint: {
  52. all: ['<%= concat.dist.dest %>'],
  53. options: {
  54. curly: true,
  55. eqeqeq: true,
  56. immed: true,
  57. latedef: true,
  58. newcap: true,
  59. noarg: true,
  60. sub: true,
  61. undef: true,
  62. boss: true,
  63. eqnull: true,
  64. browser: true,
  65. globals: {
  66. jQuery: true
  67. }
  68. }
  69. }
  70. });
  71. grunt.registerTask('webdriver', 'Browser render tests', function(arg1) {
  72. var selenium = require("./tests/selenium.js");
  73. var done = this.async();
  74. if (arguments.length) {
  75. selenium[arg1].apply(null, arguments);
  76. } else {
  77. selenium.tests();
  78. }
  79. });
  80. // Load tasks
  81. grunt.loadNpmTasks('grunt-contrib-watch');
  82. grunt.loadNpmTasks('grunt-contrib-concat');
  83. grunt.loadNpmTasks('grunt-contrib-uglify');
  84. grunt.loadNpmTasks('grunt-contrib-jshint');
  85. grunt.loadNpmTasks('grunt-contrib-qunit');
  86. // Default task.
  87. grunt.registerTask('build', ['concat', 'uglify']);
  88. grunt.registerTask('default', ['concat', 'jshint', 'qunit', 'uglify']);
  89. grunt.registerTask('travis', ['concat', 'jshint', 'qunit', 'uglify', 'webdriver']);
  90. };