Gruntfile.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. module.exports = function(grunt) {
  2. 'use strict';
  3. // Project configuration.
  4. grunt.initConfig({
  5. pkg: grunt.file.readJSON('package.json'),
  6. meta: {
  7. banner: [
  8. '/**',
  9. ' * <%= pkg.description %>',
  10. ' * @version v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>' +
  11. ' * @link <%= pkg.homepage %>',
  12. ' * @author <%= pkg.author %>',
  13. ' * @license MIT License, http://www.opensource.org/licenses/MIT',
  14. ' */'
  15. ].join('\n')
  16. },
  17. dirs: {
  18. dest: 'dist'
  19. },
  20. concat: {
  21. options: {
  22. banner: '<%= meta.banner %>'
  23. },
  24. dist: {
  25. src: ['src/*.js'],
  26. dest: '<%= dirs.dest %>/<%= pkg.name %>.js'
  27. }
  28. },
  29. zip: {
  30. '<%= dirs.dest %>/restangular.zip': [
  31. '<%= dirs.dest %>/<%= pkg.name %>.js',
  32. '<%= dirs.dest %>/<%= pkg.name %>.min.js'
  33. ]
  34. },
  35. bowerInstall: {
  36. install: {
  37. }
  38. },
  39. uglify: {
  40. options: {
  41. banner: '<%= meta.banner %>'
  42. },
  43. dist: {
  44. src: ['<%= concat.dist.dest %>'],
  45. dest: '<%= dirs.dest %>/<%= pkg.name %>.min.js'
  46. }
  47. },
  48. jshint: {
  49. files: ['Gruntfile.js', 'src/*.js'],
  50. options: {
  51. jshintrc: true
  52. }
  53. },
  54. karma: {
  55. options: {
  56. configFile: 'karma.conf.js'
  57. },
  58. build: {
  59. singleRun: true,
  60. autoWatch: false
  61. },
  62. debug: {
  63. singleRun: false,
  64. autoWatch: true,
  65. browsers: ['Chrome']
  66. },
  67. travis: {
  68. singleRun: true,
  69. autoWatch: false,
  70. browsers: ['Firefox']
  71. },
  72. travisUnderscore: {
  73. singleRun: true,
  74. autoWatch: false,
  75. browsers: ['Firefox'],
  76. configFile: 'karma.underscore.conf.js',
  77. },
  78. buildUnderscore: {
  79. configFile: 'karma.underscore.conf.js',
  80. singleRun: true,
  81. autoWatch: false
  82. },
  83. dev: {
  84. autoWatch: true
  85. }
  86. },
  87. changelog: {
  88. options: {
  89. dest: 'CHANGELOG.md'
  90. }
  91. }
  92. });
  93. // Load the plugin that provides the "jshint" task.
  94. grunt.loadNpmTasks('grunt-contrib-jshint');
  95. // Load the plugin that provides the "concat" task.
  96. grunt.loadNpmTasks('grunt-contrib-concat');
  97. // Load the plugin that provides the "uglify" task.
  98. grunt.loadNpmTasks('grunt-contrib-uglify');
  99. grunt.loadNpmTasks('grunt-bower-task');
  100. grunt.renameTask('bower', 'bowerInstall');
  101. grunt.loadNpmTasks('grunt-karma');
  102. grunt.loadNpmTasks('grunt-conventional-changelog');
  103. grunt.loadNpmTasks('grunt-zip');
  104. // Default task.
  105. grunt.registerTask('default', ['build']);
  106. // Build task.
  107. grunt.registerTask('build', ['bowerInstall', 'karma:build', 'karma:buildUnderscore', 'concat', 'uglify', 'zip']);
  108. grunt.registerTask('test', ['karma:build', 'karma:buildUnderscore']);
  109. grunt.registerTask('test-debug', ['karma:debug']);
  110. grunt.registerTask('travis', ['karma:travis', 'karma:travisUnderscore']);
  111. // Provides the "bump" task.
  112. grunt.registerTask('bump', 'Increment version number', function() {
  113. var versionType = grunt.option('type');
  114. function bumpVersion(version, versionType) {
  115. var type = {patch: 2, minor: 1, major: 0},
  116. parts = version.split('.'),
  117. idx = type[versionType || 'patch'];
  118. parts[idx] = parseInt(parts[idx], 10) + 1;
  119. while(++idx < parts.length) { parts[idx] = 0; }
  120. return parts.join('.');
  121. }
  122. var version;
  123. function updateFile(file) {
  124. var json = grunt.file.readJSON(file);
  125. version = json.version = bumpVersion(json.version, versionType || 'patch');
  126. grunt.file.write(file, JSON.stringify(json, null, ' '));
  127. }
  128. updateFile('package.json');
  129. updateFile('bower.json');
  130. grunt.log.ok('Version bumped to ' + version);
  131. });
  132. };