Gruntfile.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. var src_folders = ['wui-3', 'wui-3-rt', 'wui-7', 'wui-9', 'wui-10', '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. logo['dist/'+srcName+'/rotek.png'] = 'src/'+srcName+'/rotek.png';
  74. var favicon = {};
  75. favicon['dist/'+srcName+'/favicon.ico'] = 'src/'+srcName+'/favicon.ico';
  76. if (srcName === 'upload') {
  77. conf[srcName] = {
  78. options: { optimizationLevel: 0 },
  79. files: [ favicon ]
  80. };
  81. } else {
  82. conf[srcName] = {
  83. options: { optimizationLevel: 0 },
  84. files: [ logo, favicon ]
  85. };
  86. }
  87. }
  88. return conf;
  89. };
  90. module.exports = function (grunt) {
  91. grunt.initConfig({
  92. pkg: grunt.file.readJSON('package.json'),
  93. cssmin: cssminConf(),
  94. uglify: uglifyConf(),
  95. compress: compressConf(),
  96. htmlmin: htmlminConf(),
  97. imagemin: imageminConf(),
  98. clean: {
  99. all: {
  100. src: [
  101. '!src/**/*.js',
  102. '!src/**/*.css',
  103. 'src/**/*.min.js',
  104. 'src/**/*.min.css',
  105. 'src/**/*.min.html'
  106. ]
  107. },
  108. clear: {
  109. src: 'dist*/*'
  110. }
  111. },
  112. jshint: {
  113. all: ['Gruntfile.js', 'src/**/*.js']
  114. }
  115. });
  116. grunt.loadNpmTasks('grunt-contrib-htmlmin');
  117. grunt.loadNpmTasks('grunt-contrib-uglify');
  118. grunt.loadNpmTasks('grunt-contrib-cssmin');
  119. grunt.loadNpmTasks('grunt-contrib-clean');
  120. grunt.loadNpmTasks('grunt-contrib-compress');
  121. grunt.loadNpmTasks('grunt-contrib-imagemin');
  122. grunt.loadNpmTasks('grunt-contrib-jshint');
  123. grunt.registerTask('default', ['cssmin','uglify','htmlmin','clean:all']);
  124. grunt.registerTask('build', ['cssmin','uglify','htmlmin','compress','clean:all', 'imagemin']);
  125. grunt.registerTask('clear', ['clean:clear']);
  126. grunt.registerTask('jhint', ['jshint']);
  127. };