Gruntfile.js 5.6 KB

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