Gruntfile.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. var src_folders = ['wui-3', 'wui-3-rt', 'wui-7', 'wui-9', 'wui-9-mts', 'wui-10', 'wui-11', 'upload'];
  2. var cssminConf = function() {
  3. var conf = {};
  4. for (var i = src_folders.length - 1; i >= 0; i--) {
  5. var srcName = src_folders[i];
  6. conf[srcName] = {
  7. expand: true,
  8. cwd: 'src/'+srcName,
  9. src: ['*.css', '!*.min.css'],
  10. dest: 'src/'+srcName,
  11. ext: '.min.css'
  12. };
  13. }
  14. return conf;
  15. };
  16. var uglifyConf = function() {
  17. var conf = {};
  18. for (var i = src_folders.length - 1; i >= 0; i--) {
  19. var srcName = src_folders[i];
  20. conf[srcName] = {
  21. files: [{
  22. expand: true,
  23. cwd: 'src/'+srcName,
  24. src: '**/*.js',
  25. dest: 'src/'+srcName,
  26. rename: function (dst, src) {
  27. return dst + '/' + src.replace('.js', '.min.js');
  28. }
  29. }]
  30. };
  31. }
  32. return conf;
  33. };
  34. var compressConf = function() {
  35. var conf = {};
  36. for (var i = src_folders.length - 1; i >= 0; i--) {
  37. var srcName = src_folders[i];
  38. conf[srcName] = {
  39. options: { mode: 'gzip' },
  40. files: [
  41. {expand: true, cwd: 'src/'+srcName+'/',src: ['*.min.js'], dest: 'dist/'+srcName, ext: '.js'},
  42. {expand: true, cwd: 'src/'+srcName+'/',src: ['*.min.css'], dest: 'dist/'+srcName, ext: '.css'},
  43. {expand: true, cwd: 'src/'+srcName+'/',src: ['*.min.html'], dest: 'dist/'+srcName, ext: '.html'}
  44. ]
  45. };
  46. }
  47. return conf;
  48. };
  49. var htmlminConf = function() {
  50. var conf = {};
  51. for (var i = src_folders.length - 1; i >= 0; i--) {
  52. var srcName = src_folders[i];
  53. conf[srcName] = {
  54. options: { removeComments: true, collapseWhitespace: true },
  55. files: [{
  56. expand: true,
  57. cwd: 'src/'+srcName,
  58. src: ['*.html'],
  59. dest: 'src/'+srcName,
  60. rename: function (dst, src) {
  61. return dst + '/' + src.replace('.html', '.min.html');
  62. }
  63. }]
  64. };
  65. }
  66. return conf;
  67. };
  68. var imageminConf = function() {
  69. var conf = {};
  70. for (var i = src_folders.length - 1; i >= 0; i--) {
  71. var srcName = src_folders[i];
  72. var logo = {};
  73. if (srcName === 'wui-3-rt') {
  74. logo['dist/'+srcName+'/logo.png'] = 'src/'+srcName+'/logo.png';
  75. } else {
  76. logo['dist/'+srcName+'/rotek.png'] = 'src/'+srcName+'/rotek.png';
  77. }
  78. var favicon = {};
  79. favicon['dist/'+srcName+'/favicon.ico'] = 'src/'+srcName+'/favicon.ico';
  80. if (srcName === 'upload') {
  81. conf[srcName] = {
  82. options: { optimizationLevel: 0 },
  83. files: [ favicon ]
  84. };
  85. } else {
  86. conf[srcName] = {
  87. options: { optimizationLevel: 0 },
  88. files: [ logo, favicon ]
  89. };
  90. }
  91. }
  92. return conf;
  93. };
  94. module.exports = function (grunt) {
  95. grunt.initConfig({
  96. pkg: grunt.file.readJSON('package.json'),
  97. cssmin: cssminConf(),
  98. uglify: uglifyConf(),
  99. compress: compressConf(),
  100. htmlmin: htmlminConf(),
  101. imagemin: imageminConf(),
  102. clean: {
  103. all: {
  104. src: [
  105. '!src/**/*.js',
  106. '!src/**/*.css',
  107. 'src/**/*.min.js',
  108. 'src/**/*.min.css',
  109. 'src/**/*.min.html'
  110. ]
  111. },
  112. clear: {
  113. src: 'dist*/*'
  114. }
  115. },
  116. jshint: {
  117. all: ['Gruntfile.js', 'src/**/*.js']
  118. }
  119. });
  120. grunt.loadNpmTasks('grunt-contrib-htmlmin');
  121. grunt.loadNpmTasks('grunt-contrib-uglify');
  122. grunt.loadNpmTasks('grunt-contrib-cssmin');
  123. grunt.loadNpmTasks('grunt-contrib-clean');
  124. grunt.loadNpmTasks('grunt-contrib-compress');
  125. grunt.loadNpmTasks('grunt-contrib-imagemin');
  126. grunt.loadNpmTasks('grunt-contrib-jshint');
  127. grunt.registerTask('default', ['cssmin','uglify','htmlmin','clean:all']);
  128. grunt.registerTask('build', ['cssmin','uglify','htmlmin','compress','clean:all', 'imagemin']);
  129. grunt.registerTask('clear', ['clean:clear']);
  130. grunt.registerTask('jhint', ['jshint']);
  131. };