Gruntfile.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. module.exports = function (grunt) {
  2. 'use strict';
  3. grunt.initConfig({
  4. pkg: grunt.file.readJSON('package.json'),
  5. version: {
  6. js: {
  7. src: ['<%= pkg.exportName %>.js', '*.json']
  8. },
  9. cdn: {
  10. options: {
  11. prefix: '(cdnjs\\.cloudflare\\.com\\/ajax\\/libs\\/Sortable|cdn\\.jsdelivr\\.net\\/sortable)\\/',
  12. replace: '[0-9\\.]+'
  13. },
  14. src: ['README.md']
  15. }
  16. },
  17. jshint: {
  18. all: ['*.js', '!*.min.js'],
  19. options: {
  20. jshintrc: true
  21. }
  22. },
  23. uglify: {
  24. options: {
  25. banner: '/*! <%= pkg.exportName %> <%= pkg.version %> - <%= pkg.license %> | <%= pkg.repository.url %> */\n'
  26. },
  27. dist: {
  28. files: {
  29. '<%= pkg.exportName %>.min.js': ['<%= pkg.exportName %>.js']
  30. }
  31. },
  32. jquery: {
  33. files: {}
  34. }
  35. },
  36. jquery: {}
  37. });
  38. grunt.registerTask('jquery', function (exportName, uglify) {
  39. if (exportName == 'min') {
  40. exportName = null;
  41. uglify = 'min';
  42. }
  43. if (!exportName) {
  44. exportName = 'sortable';
  45. }
  46. var fs = require('fs'),
  47. filename = 'jquery.fn.' + exportName + '.js';
  48. grunt.log.oklns(filename);
  49. fs.writeFileSync(
  50. filename,
  51. (fs.readFileSync('jquery.binding.js') + '')
  52. .replace('$.fn.sortable', '$.fn.' + exportName)
  53. .replace('/* CODE */',
  54. (fs.readFileSync('Sortable.js') + '')
  55. .replace(/^[\s\S]*?function[\s\S]*?(var[\s\S]+)\/\/\s+Export[\s\S]+/, '$1')
  56. )
  57. );
  58. if (uglify) {
  59. var opts = {};
  60. opts['jquery.fn.' + exportName + '.min.js'] = filename;
  61. grunt.config.set('uglify.jquery.files', opts);
  62. grunt.task.run('uglify:jquery');
  63. }
  64. });
  65. grunt.loadNpmTasks('grunt-version');
  66. grunt.loadNpmTasks('grunt-contrib-jshint');
  67. grunt.loadNpmTasks('grunt-contrib-uglify');
  68. grunt.registerTask('tests', ['jshint']);
  69. grunt.registerTask('default', ['tests', 'version', 'uglify:dist']);
  70. };