Gruntfile.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. module.exports = function(grunt) {
  2. function createBanner(fileName) {
  3. return "/*!\n" +
  4. "* " + fileName + "\n" +
  5. "* http://github.com/RobinHerbots/jquery.inputmask\n" +
  6. "* Copyright (c) 2010 - <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>\n" +
  7. "* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n" +
  8. "* Version: <%= pkg.version %>\n" +
  9. "*/\n";
  10. }
  11. function createUglifyConfig(path) {
  12. var uglifyConfig = {};
  13. var srcFiles = grunt.file.expand(path + "/*.js");
  14. for (var srcNdx in srcFiles) {
  15. var dstFile = srcFiles[srcNdx].replace("js/", ""),
  16. dstFileMin = dstFile.replace(".js", ".min.js");
  17. uglifyConfig[dstFile] = {
  18. dest: 'dist/inputmask/' + dstFile,
  19. src: srcFiles[srcNdx],
  20. options: {
  21. banner: createBanner(dstFile),
  22. beautify: true,
  23. mangle: false,
  24. preserveComments: "some",
  25. ASCIIOnly: true
  26. }
  27. };
  28. uglifyConfig[dstFileMin] = {
  29. dest: "dist/min/inputmask/" + dstFileMin,
  30. src: srcFiles[srcNdx],
  31. options: {
  32. banner: createBanner(dstFileMin),
  33. preserveComments: "some",
  34. ASCIIOnly: true
  35. }
  36. };
  37. }
  38. srcFiles = grunt.file.expand(path + "/*.extensions.js");
  39. srcFiles.splice(0, 0, "js/jquery.inputmask.js");
  40. srcFiles.splice(0, 0, "js/inputmask.js");
  41. srcFiles.splice(0, 0, "js/dependencyLib.js");
  42. uglifyConfig["inputmaskbundle"] = {
  43. files: {
  44. 'dist/<%= pkg.name %>.bundle.js': srcFiles
  45. },
  46. options: {
  47. banner: createBanner('<%= pkg.name %>.bundle'),
  48. beautify: true,
  49. mangle: false,
  50. preserveComments: "some",
  51. ASCIIOnly: true
  52. }
  53. }
  54. uglifyConfig["inputmaskbundlemin"] = {
  55. files: {
  56. 'dist/min/<%= pkg.name %>.bundle.min.js': srcFiles
  57. },
  58. options: {
  59. banner: createBanner('<%= pkg.name %>.bundle'),
  60. preserveComments: "some",
  61. ASCIIOnly: true
  62. }
  63. }
  64. return uglifyConfig;
  65. }
  66. // Project configuration.
  67. grunt.initConfig({
  68. pkg: grunt.file.readJSON("package.json"),
  69. uglify: createUglifyConfig("js"),
  70. clean: ["dist"],
  71. karma: {
  72. options: {
  73. configFile: 'karma.conf.js'
  74. },
  75. unit: {
  76. runnerPort: 9999,
  77. singleRun: true,
  78. browsers: ["Chrome"], //will later add extra test targets
  79. logLevel: 'ERROR'
  80. }
  81. },
  82. bump: {
  83. options: {
  84. files: ['package.json', 'bower.json', 'composer.json', 'component.json'],
  85. updateConfigs: ['pkg'],
  86. commit: false,
  87. createTag: false,
  88. push: false
  89. }
  90. },
  91. release: {
  92. options: {
  93. bump: false,
  94. commitMessage: 'jquery.inputmask <%= version %>'
  95. }
  96. },
  97. nugetpack: {
  98. dist: {
  99. src: function() {
  100. return process.platform === "linux" ? 'nuspecs/jquery.inputmask.linux.nuspec' : 'nuspecs/jquery.inputmask.nuspec';
  101. }(),
  102. dest: 'dist/',
  103. options: {
  104. version: '<%= pkg.version %>'
  105. }
  106. }
  107. },
  108. nugetpush: {
  109. dist: {
  110. src: 'dist/jQuery.InputMask.<%= pkg.version %>.nupkg'
  111. }
  112. },
  113. shell: {
  114. options: {
  115. stderr: false
  116. },
  117. gitcommitchanges: {
  118. command: ['git add .',
  119. 'git reset -- package.json',
  120. 'git commit -m "jquery.inputmask <%= pkg.version %>"'
  121. ].join('&&')
  122. }
  123. },
  124. eslint: {
  125. target: grunt.file.expand("js/*.js")
  126. },
  127. availabletasks: {
  128. tasks: {
  129. options: {
  130. filter: 'exclude',
  131. tasks: ['availabletasks', 'default'],
  132. showTasks: ['user']
  133. }
  134. }
  135. }
  136. });
  137. // Load the plugin that provides the tasks.
  138. require('load-grunt-tasks')(grunt);
  139. grunt.registerTask('publish:patch', ['clean', 'bump:patch', 'uglify', 'shell:gitcommitchanges', 'release', 'nugetpack', 'nugetpush']);
  140. grunt.registerTask('publish:minor', ['clean', 'bump:minor', 'uglify', 'shell:gitcommitchanges', 'release', 'nugetpack', 'nugetpush']);
  141. grunt.registerTask('publish:major', ['clean', 'bump:major', 'uglify', 'shell:gitcommitchanges', 'release', 'nugetpack', 'nugetpush']);
  142. grunt.registerTask('validate', ['eslint', 'karma']);
  143. grunt.registerTask('build', ['bump:prerelease', 'clean', 'uglify']);
  144. grunt.registerTask('default', ["availabletasks"]);
  145. };