Gruntfile.js 5.2 KB

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