Gruntfile.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. module.exports = function(grunt) {
  2. require('time-grunt')(grunt);
  3. var baseName = 'videojs.hotkeys';
  4. var pkg = grunt.file.readJSON('package.json');
  5. // Project configuration.
  6. grunt.initConfig({
  7. baseName: baseName,
  8. pkg: pkg,
  9. clean: {
  10. build: ['build/*'],
  11. dist: ['dist/*']
  12. },
  13. uglify: {
  14. dist: {
  15. options: {
  16. banner: '/* <%= pkg.name %> v<%= pkg.version %> - <%= pkg.homepage %> */',
  17. mangle: true,
  18. compress: true,
  19. sourceMap: true,
  20. sourceMapName: 'build/<%= baseName %>.min.js.map'
  21. },
  22. files: {
  23. 'build/<%= baseName %>.min.js': ['build/<%= baseName %>.js']
  24. }
  25. },
  26. minify: {
  27. options: {
  28. banner: '/* <%= pkg.name %> v<%= pkg.version %> - <%= pkg.homepage %> */',
  29. mangle: true,
  30. compress: true
  31. },
  32. files: {
  33. '<%= baseName %>.min.js': ['<%= baseName %>.js']
  34. }
  35. }
  36. },
  37. copy: {
  38. dist: {
  39. expand: true,
  40. files: [{
  41. expand: true,
  42. cwd: 'build/',
  43. src: '**',
  44. dest: 'dist/<%= pkg.name %>/',
  45. flatten: true,
  46. filter: 'isFile'
  47. }]
  48. },
  49. build: {
  50. src: '<%= baseName %>.js',
  51. dest: 'build/'
  52. }
  53. },
  54. compress: {
  55. dist: {
  56. options: {
  57. archive: 'dist/<%= pkg.name %>-<%= pkg.version %>.zip',
  58. mode: 'zip',
  59. level: 9
  60. },
  61. expand: true,
  62. cwd: 'dist/<%= pkg.name %>',
  63. src: '**',
  64. dest: '<%= pkg.name %>/'
  65. }
  66. },
  67. github_releaser2: {
  68. options: {
  69. repository: 'ctd1500/videojs-hotkeys',
  70. authentication: {
  71. type: 'token',
  72. token: grunt.file.readJSON('.github.json').token
  73. },
  74. release: {
  75. tag_name: 'v<%= pkg.version %>',
  76. name: 'Release <%= pkg.version %>',
  77. draft: true
  78. }
  79. },
  80. release: {
  81. src: ['dist/<%= pkg.name %>-<%= pkg.version %>.zip']
  82. }
  83. }
  84. });
  85. grunt.loadNpmTasks('grunt-contrib-uglify');
  86. grunt.loadNpmTasks('grunt-contrib-copy');
  87. grunt.loadNpmTasks('grunt-contrib-clean');
  88. grunt.loadNpmTasks('grunt-contrib-compress');
  89. grunt.loadNpmTasks('grunt-github-releaser2');
  90. // Default task.
  91. grunt.registerTask('default', ['clean', 'buildver', 'copy:build', 'uglify:dist', 'dist', 'uglify:minify', 'cdn-link']);
  92. grunt.registerTask('buildver', 'Update version', function() {
  93. var m = grunt.file.read(baseName + '.js');
  94. m = m.replace(/(version: ")\d+\.\d+(\.\d+)?(")/g, '$1' + pkg.version + '$3');
  95. grunt.file.write(baseName + '.js', m);
  96. });
  97. grunt.registerTask('dist', 'Creates distribution files', ['copy:dist', 'compress:dist']);
  98. grunt.registerTask('release', 'Create a release on github and upload zip file.',
  99. ['clean', 'buildver', 'copy:build', 'uglify:dist', 'dist', 'github_releaser2']);
  100. grunt.registerTask('cdn-link', 'Updates the CDN link in the Readme', function() {
  101. var rm = grunt.file.read('README.md');
  102. var version = pkg.version;
  103. version = version.replace(/(\d+\.\d+)\.\d+/, '$1');
  104. rm = rm.replace(/(\/\/cdn\.sc\.gl\/videojs-hotkeys\/)\d+\.\d+(\.\d+)?/g, '$1' + version);
  105. grunt.file.write('README.md', rm);
  106. });
  107. };