gulpfile.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. /**
  2. * Created by chen on 2017/9/26.
  3. */
  4. let gulp =require( 'gulp');
  5. let gulpLoadPlugins = require('gulp-load-plugins');
  6. let del = require('del');
  7. let uglify = require('gulp-uglify-es').default;
  8. let config = require("./config/gulpConfig.js");
  9. const $ = gulpLoadPlugins();
  10. let common_jspaths=config.common_jspaths;
  11. let common_css=config.common_css;
  12. let pm_jspaths=config.pm_jspaths;
  13. let pm_csspaths=config.pm_css;
  14. let login_jspaths=config.login_jspaths;
  15. let main_jspaths=config.main_jspaths;
  16. let main_csspaths=config.main_css;
  17. let version=config.version;
  18. let cssDest='web/dest/css';
  19. let scriptsDest='web/dest/scripts';
  20. let commonOptions={
  21. jspaths:common_jspaths,
  22. csspaths:common_css,
  23. concatName:'common.all.min'
  24. };
  25. let headerOptions={
  26. version:version,
  27. scriptsDest:'web/dest/scripts',
  28. concatName:'header.all.min',
  29. srcHtml:'web/src/html/common/header.html',
  30. htmlDest:'web/common/html',
  31. htmlName:'header.html',
  32. injectList:['web/dest/scripts/common.all.min.'+version+'.js']
  33. };
  34. let loginOptions={
  35. version:version,
  36. scriptsDest:'web/dest/scripts',
  37. jspaths:login_jspaths,
  38. concatName:'login.all.min',
  39. srcHtml:'web/src/html/login/login.html',
  40. htmlDest:'web/users/html',
  41. htmlName:'login.html',
  42. injectList:[ 'web/dest/scripts/common.all.min.'+version+'.js',
  43. 'web/dest/scripts/login.all.min.'+version+'.js',
  44. 'web/dest/css/common.all.min.'+version+'.css']
  45. }
  46. let pmOptions={
  47. version:version,
  48. scriptsDest:'web/dest/scripts',
  49. jspaths:pm_jspaths,
  50. csspaths:pm_csspaths,
  51. concatName:'pm.all.min',
  52. srcHtml:'web/src/html/pm/!*.html',
  53. htmlDest:'web/building_saas/pm/html',
  54. htmlName:'project-management.html',
  55. injectList:['web/dest/scripts/pm.all.min.'+version+'.js',
  56. 'web/dest/css/common.all.min.'+version+'.css',
  57. 'web/dest/css/pm.all.min.'+version+'.css']
  58. };
  59. let mainOptions={
  60. version:version,
  61. scriptsDest:'web/dest/scripts',
  62. jspaths:main_jspaths,
  63. csspaths:main_csspaths,
  64. concatName:'main.all.min',
  65. srcHtml:'web/src/html/main/main.html',
  66. htmlDest:'web/building_saas/main/html',
  67. htmlName:'main.html',
  68. injectList:['web/dest/scripts/main.all.min.'+version+'.js',
  69. 'web/dest/css/common.all.min.'+version+'.css',
  70. 'web/dest/css/main.all.min.'+version+'.css']
  71. }
  72. function minify(options) {
  73. if(options.jspaths){
  74. return gulp.src(options.jspaths)
  75. .pipe($.plumber())
  76. // .pipe(uglify())
  77. .pipe($.concat(options.concatName+"."+version+".js"))
  78. .pipe(gulp.dest(scriptsDest));
  79. }
  80. return;
  81. }
  82. function css(options) {
  83. if(options.csspaths){
  84. return gulp.src(options.csspaths)
  85. .pipe($.plumber())
  86. .pipe($.cssnano())
  87. .pipe($.concat(options.concatName+"."+version+".css"))
  88. .pipe(gulp.dest(cssDest));
  89. }
  90. return;
  91. }
  92. function inject(options) {
  93. var target = gulp.src(options.htmlDest+'/'+options.htmlName);
  94. var sources = gulp.src(options.injectList, {read: false});
  95. return target.pipe($.plumber())
  96. .pipe($.inject(sources))
  97. .pipe(gulp.dest(options.htmlDest));
  98. }
  99. function htmlmin(options) {
  100. return gulp.src(options.htmlDest+'/*.html')
  101. // .pipe($.htmlmin({collapseWhitespace: true}))
  102. .pipe(gulp.dest(options.htmlDest));
  103. }
  104. gulp.task('minify', function (){
  105. return minify(commonOptions);
  106. });
  107. gulp.task('css',function () {
  108. return css(commonOptions);
  109. })
  110. gulp.task('common', ['minify','css']);
  111. gulp.task('login_minify',['common'], function (){
  112. return minify(loginOptions);
  113. });
  114. gulp.task('login_css',function () {
  115. return css(loginOptions);
  116. })
  117. gulp.task('login_inject',['login_minify','login_css'],function () {
  118. return inject(loginOptions);
  119. })
  120. gulp.task('login',['login_inject'], function (){
  121. return htmlmin(loginOptions);
  122. });
  123. gulp.task('header_minify',['common'], function (){
  124. return minify(headerOptions);
  125. });
  126. gulp.task('header_css',function () {
  127. return css(headerOptions);
  128. })
  129. gulp.task('header_inject',['header_minify','header_css'],function () {
  130. return inject(headerOptions);
  131. })
  132. gulp.task('header',['header_inject'], function (){
  133. return htmlmin(headerOptions);
  134. });
  135. gulp.task('pm_minify',['common'], function (){
  136. return minify(pmOptions);
  137. });
  138. gulp.task('pm_css',function () {
  139. return css(pmOptions);
  140. })
  141. gulp.task('pm_inject',['pm_minify','pm_css'],function () {
  142. return inject(pmOptions);
  143. })
  144. gulp.task('pm',['pm_inject'], function (){
  145. return htmlmin(pmOptions);
  146. });
  147. gulp.task('main_minify',['common'], function (){
  148. return minify(mainOptions);
  149. });
  150. gulp.task('main_css',function () {
  151. return css(mainOptions);
  152. })
  153. gulp.task('main_inject',['main_minify','main_css'],function () {
  154. return inject(mainOptions);
  155. })
  156. gulp.task('main',['main_inject'], function (){
  157. return htmlmin(mainOptions);
  158. });
  159. gulp.task('build',['header','login','pm','main']);