Gruntfile.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. module.exports = function(grunt) {
  2. var fs = require('fs')
  3. , version = fs.readFileSync('Changelog', 'utf-8')
  4. .split('\n')
  5. .shift()
  6. .split(/\s+/)
  7. .pop();
  8. grunt.initConfig({
  9. version: {
  10. options: {
  11. release: version,
  12. pkg: 'package.json'
  13. },
  14. js: {
  15. options: {
  16. prefix: "Version:\\s+"
  17. },
  18. src: ['jquery.iviewer.js']
  19. },
  20. json: {
  21. src: ['package.json', 'iviewer.jquery.json', 'bower.json']
  22. }
  23. },
  24. uglify: {
  25. options: {
  26. report: "min",
  27. mangle: false,
  28. banner: 'set me later'
  29. },
  30. js: {
  31. files: {
  32. 'jquery.iviewer.min.js': ['jquery.iviewer.js']
  33. }
  34. }
  35. }
  36. });
  37. grunt.loadNpmTasks('grunt-version');
  38. grunt.loadNpmTasks('grunt-contrib-uglify');
  39. grunt.registerTask('banner', function() {
  40. var banner = fs.readFileSync('jquery.iviewer.js', 'utf-8')
  41. .match(RegExp("^/\\*[^]*?\\*/"))[0] + '\n\n'
  42. grunt.config('uglify.options.banner', banner)
  43. });
  44. grunt.registerTask('changelog', function() {
  45. var date = new Date()
  46. , pad = function(len, symb) {
  47. if (symb.toString().length < len) {
  48. return '0' + symb;
  49. } else {
  50. return symb;
  51. }
  52. }
  53. , stamp = '(' + [
  54. date.getFullYear(),
  55. date.getMonth() + 1,
  56. date.getDate()
  57. ].map(pad.bind(null, 2))
  58. .join('/') + ')\n'
  59. , file = grunt.file.read('Changelog')
  60. .replace(/(.*?)\n/, "$1 " + stamp);
  61. grunt.file.write('Changelog', file)
  62. })
  63. grunt.registerTask('release', ['version', 'banner', 'changelog', 'uglify'])
  64. };