Gruntfile.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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. return uglifyConfig;
  39. }
  40. // Project configuration.
  41. grunt.initConfig({
  42. pkg: grunt.file.readJSON("package.json"),
  43. uglify: createUglifyConfig("js"),
  44. clean: ["dist", "build"],
  45. karma: {
  46. options: {
  47. configFile: 'karma.conf.js'
  48. },
  49. unit: {
  50. runnerPort: 9999,
  51. singleRun: true,
  52. browsers: ["Chrome"], //will later add extra test targets
  53. logLevel: 'ERROR'
  54. }
  55. },
  56. bump: {
  57. options: {
  58. files: ['package.json', 'bower.json', 'composer.json', 'component.json'],
  59. updateConfigs: ['pkg'],
  60. commit: false,
  61. createTag: false,
  62. push: false
  63. }
  64. },
  65. release: {
  66. options: {
  67. bump: false,
  68. commitMessage: 'jquery.inputmask <%= version %>'
  69. }
  70. },
  71. nugetpack: {
  72. dist: {
  73. src: function() {
  74. return process.platform === "linux" ? 'nuspecs/jquery.inputmask.linux.nuspec' : 'nuspecs/jquery.inputmask.nuspec';
  75. }(),
  76. dest: 'dist/',
  77. options: {
  78. version: '<%= pkg.version %>'
  79. }
  80. }
  81. },
  82. nugetpush: {
  83. dist: {
  84. src: 'dist/jQuery.InputMask.<%= pkg.version %>.nupkg'
  85. }
  86. },
  87. shell: {
  88. options: {
  89. stderr: false
  90. },
  91. gitcommitchanges: {
  92. command: ['git add .',
  93. 'git reset -- package.json',
  94. 'git commit -m "jquery.inputmask <%= pkg.version %>"'
  95. ].join('&&')
  96. }
  97. },
  98. eslint: {
  99. target: grunt.file.expand("js/*.js")
  100. },
  101. availabletasks: {
  102. tasks: {
  103. options: {
  104. filter: 'exclude',
  105. tasks: ['availabletasks', 'default'],
  106. showTasks: ['user']
  107. }
  108. }
  109. }
  110. });
  111. // Load the plugin that provides the tasks.
  112. require('load-grunt-tasks')(grunt);
  113. grunt.registerTask('publish:patch', ['clean', 'bump:patch', 'uglify', 'shell:gitcommitchanges', 'release', 'nugetpack', 'nugetpush']);
  114. grunt.registerTask('publish:minor', ['clean', 'bump:minor', 'uglify', 'shell:gitcommitchanges', 'release', 'nugetpack', 'nugetpush']);
  115. grunt.registerTask('publish:major', ['clean', 'bump:major', 'uglify', 'shell:gitcommitchanges', 'release', 'nugetpack', 'nugetpush']);
  116. grunt.registerTask('validate', ['eslint', 'karma']);
  117. grunt.registerTask('build', ['bump:prerelease', 'clean', 'uglify']);
  118. grunt.registerTask('default', ["availabletasks"]);
  119. };