gulpfile.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. 'use strict';
  2. var gulp = require('gulp');
  3. require('gulp-run-seq');
  4. var sass = require('gulp-sass');
  5. var autoprefixer = require("gulp-autoprefixer");
  6. var cleancss = require('gulp-clean-css');
  7. var rename = require("gulp-rename");
  8. var uglify = require("gulp-uglify");
  9. var sourcemaps = require('gulp-sourcemaps');
  10. var cssbeautify = require('gulp-cssbeautify');
  11. var lec = require('gulp-line-ending-corrector');
  12. var concat = require('gulp-concat');
  13. var wait = require('gulp-wait');
  14. var print = require('gulp-print').default;
  15. var cleanCssOptions = {
  16. compatibility: 'ie7',
  17. keepSpecialComments: '*',
  18. rebase: false
  19. };
  20. var path = {
  21. sass: 'src/main/sass',
  22. src: {
  23. css: 'src/main/resources/META-INF/resources/static/css',
  24. plugins: 'src/main/resources/META-INF/resources/static/plugins',
  25. scripts: 'src/main/resources/META-INF/resources/static/scripts'
  26. },
  27. output: {
  28. css: 'src/main/resources/META-INF/resources/static/css',
  29. plugins: 'src/main/resources/META-INF/resources/static/plugins',
  30. scripts: 'src/main/resources/META-INF/resources/static/scripts'
  31. }
  32. };
  33. gulp.task('sass-bootstrap', function(end) {
  34. // Bootstrap 3
  35. gulp.src(path.sass + '/custom/bootstrap.scss')
  36. .pipe(sass())
  37. .pipe(cssbeautify())
  38. //.pipe(lec({ eolc: 'CRLF', encoding: 'utf8' }))
  39. .pipe(gulp.dest(path.output.plugins + '/bootstrap/css'))
  40. .pipe(print(function(filepath) {
  41. return "sass: " + filepath;
  42. }))
  43. .on('end', function(){
  44. end.notify('sass-bootstrap-end', function() {});
  45. });
  46. });
  47. gulp.task('sass-custom', function(end) {
  48. // 组件
  49. gulp.src([
  50. path.sass + '/custom/*.scss',
  51. '!' + path.sass + '/custom/bootstrap.scss'
  52. ])
  53. .pipe(sass())
  54. .pipe(autoprefixer())
  55. .pipe(cssbeautify())
  56. //.pipe(lec({ eolc: 'CRLF', encoding: 'utf8' }))
  57. .pipe(gulp.dest(path.output.css))
  58. .pipe(print(function(filepath) {
  59. return "sass: " + filepath;
  60. }))
  61. .on('end', function(){
  62. end.notify('sass-custom-end', function() {});
  63. });
  64. });
  65. gulp.task('sass-themes', function(end) {
  66. // 主题
  67. gulp.src(path.sass + '/custom/themes/*.scss')
  68. .pipe(sass())
  69. .pipe(autoprefixer())
  70. .pipe(cssbeautify())
  71. //.pipe(lec({ eolc: 'CRLF', encoding: 'utf8' }))
  72. .pipe(gulp.dest(path.output.css + '/themes'))
  73. .pipe(print(function(filepath) {
  74. return "sass: " + filepath;
  75. }))
  76. .on('end', function(){
  77. end.notify('sass-themes-end', function() {});
  78. });
  79. });
  80. //*** SASS 编译
  81. gulp.task('sass', ['sass-bootstrap', 'sass-custom', 'sass-themes']);
  82. //*** CSS 压缩任务
  83. gulp.task('minify-bootstrap', ['sass-bootstrap'], function(end) {
  84. end.wait('sass-bootstrap-end');
  85. gulp.src([
  86. path.src.plugins + '/bootstrap/css/*.css',
  87. '!' + path.src.plugins + '/bootstrap/css/*.min.css'
  88. ])
  89. .pipe(sourcemaps.init())
  90. .pipe(cleancss(cleanCssOptions))
  91. .pipe(rename({ suffix: '.min' }))
  92. .pipe(sourcemaps.write('./', { includeContent: false }))
  93. //.pipe(lec({ eolc: 'CRLF', encoding: 'utf8' }))
  94. .pipe(gulp.dest(path.output.plugins + '/bootstrap/css'))
  95. .pipe(print(function(filepath) {
  96. return "minify-bootstrap: " + filepath;
  97. }));
  98. });
  99. gulp.task('minify-custom', ['sass-custom'], function(end) {
  100. end.wait('sass-custom-end');
  101. gulp.src([
  102. path.src.css + '/*.css',
  103. '!' + path.src.css + '/*.min.css'
  104. ])
  105. .pipe(sourcemaps.init())
  106. .pipe(cleancss(cleanCssOptions))
  107. .pipe(rename({ suffix: '.min' }))
  108. .pipe(sourcemaps.write('./', { includeContent: false }))
  109. //.pipe(lec({ eolc: 'CRLF', encoding: 'utf8' }))
  110. .pipe(gulp.dest(path.output.css))
  111. .pipe(print(function(filepath) {
  112. return "minify-css: " + filepath;
  113. }));
  114. });
  115. gulp.task('minify-themes', ['sass-themes'], function(end) {
  116. end.wait('sass-themes-end');
  117. gulp.src([
  118. path.src.css + '/themes/*.css',
  119. '!' + path.src.css + '/themes/*.min.css'
  120. ])
  121. .pipe(sourcemaps.init())
  122. .pipe(cleancss(cleanCssOptions))
  123. .pipe(rename({ suffix: '.min' }))
  124. .pipe(sourcemaps.write('./', { includeContent: false }))
  125. //.pipe(lec({ eolc: 'CRLF', encoding: 'utf8' }))
  126. .pipe(gulp.dest(path.output.css + '/themes'))
  127. .pipe(print(function(filepath) {
  128. return "minify-css: " + filepath;
  129. }));
  130. });
  131. gulp.task('minify-css', ['minify-bootstrap', 'minify-custom', 'minify-themes']);
  132. //*** JS 压缩任务
  133. gulp.task('minify-scrpits', function(end) {
  134. //js 压缩
  135. gulp.src([
  136. path.src.scripts + '/*.js',
  137. '!' + path.src.scripts + '/*.min.js'
  138. ])
  139. .pipe(sourcemaps.init())
  140. .pipe(uglify({ output: { ascii_only: true } }))
  141. .pipe(rename({ suffix: '.min' }))
  142. .pipe(sourcemaps.write('./', { includeContent: false }))
  143. .pipe(lec({ eolc: 'CRLF', encoding: 'utf8' }))
  144. .pipe(gulp.dest(path.output.scripts))
  145. .pipe(print(function(filepath) {
  146. return "minify-js: " + filepath;
  147. }));
  148. });
  149. gulp.task('minify-bootstrap-modal', function(end) {
  150. gulp.src([
  151. path.src.plugins + '/bootstrap-modal/js/bootstrap-modalmanager.js',
  152. path.src.plugins + '/bootstrap-modal/js/bootstrap-modal.js'
  153. ])
  154. .pipe(sourcemaps.init())
  155. .pipe(concat('bootstrap-modal-all.js'))
  156. .pipe(gulp.dest(path.output.plugins + '/bootstrap-modal/js'))
  157. .pipe(uglify({ output: { ascii_only: true } }))
  158. .pipe(rename({ suffix: '.min' }))
  159. .pipe(sourcemaps.write('./', { includeContent: false }))
  160. .pipe(lec({ eolc: 'CRLF', encoding: 'utf8' }))
  161. .pipe(gulp.dest(path.output.plugins + '/bootstrap-modal/js'))
  162. .pipe(print(function(filepath) {
  163. return "minify-js: " + filepath;
  164. }));
  165. });
  166. gulp.task('minify-bootstrap-pagination', function(end) {
  167. gulp.src([
  168. path.src.plugins + '/bootstrap-pagination/bootstrap-pagination.js'
  169. ])
  170. .pipe(sourcemaps.init())
  171. .pipe(uglify({ output: { ascii_only: true } }))
  172. .pipe(rename({ suffix: '.min' }))
  173. .pipe(sourcemaps.write('./', { includeContent: false }))
  174. .pipe(lec({ eolc: 'CRLF', encoding: 'utf8' }))
  175. .pipe(gulp.dest(path.output.plugins + '/bootstrap-pagination'))
  176. .pipe(print(function(filepath) {
  177. return "minify-js: " + filepath;
  178. }));
  179. });
  180. gulp.task('minify-common-grid', function(end) {
  181. gulp.src([
  182. path.src.plugins + '/jqwidgets/common-grid.js'
  183. ])
  184. .pipe(sourcemaps.init())
  185. .pipe(uglify({ output: { ascii_only: true } }))
  186. .pipe(rename({ suffix: '.min' }))
  187. .pipe(sourcemaps.write('./', { includeContent: false }))
  188. .pipe(lec({ eolc: 'CRLF', encoding: 'utf8' }))
  189. .pipe(gulp.dest(path.output.plugins + '/jqwidgets'))
  190. .pipe(print(function(filepath) {
  191. return "minify-js: " + filepath;
  192. }));
  193. gulp.src([
  194. path.src.plugins + '/video.js/videojs-contrib-hls.js'
  195. ])
  196. .pipe(sourcemaps.init())
  197. .pipe(uglify({ output: { ascii_only: true } }))
  198. .pipe(rename({ suffix: '.min' }))
  199. .pipe(lec({ eolc: 'CRLF', encoding: 'utf8' }))
  200. .pipe(gulp.dest(path.output.plugins + '/video.js'))
  201. .pipe(print(function(filepath) {
  202. return "minify-js: " + filepath;
  203. }));
  204. });
  205. gulp.task('minify-js', ['minify-scrpits', 'minify-bootstrap-modal', 'minify-bootstrap-pagination', 'minify-common-grid']);
  206. gulp.task('default', ['minify-css', 'minify-js']);