gulpfile.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. const gulp = require('gulp'),
  2. concat = require("gulp-concat"),
  3. rename = require("gulp-rename"),
  4. cleanCSS = require('gulp-clean-css'),
  5. uglify = require('gulp-uglify'),
  6. terser = require('gulp-terser'),
  7. sass = require('gulp-sass')(require('sass')),
  8. streamqueue = require('streamqueue');
  9. browserSync = require('browser-sync').create();
  10. function copy(cb) {
  11. gulp.src('./node_modules/bootstrap/dist/js/bootstrap.bundle.js')
  12. .pipe(rename('v4-bootstrap.js'))
  13. .pipe(gulp.dest('./js/'));
  14. gulp.src('./node_modules/bootstrap/dist/js/bootstrap.bundle.js.map')
  15. .pipe(gulp.dest('./js/'));
  16. gulp.src('./node_modules/jquery/dist/jquery.min.js')
  17. .pipe(rename('v4-jquery.js'))
  18. .pipe(gulp.dest('./js/'));
  19. gulp.src('./node_modules/jasny-bootstrap/dist/js/jasny-bootstrap.min.js')
  20. .pipe(rename('v3-jasny-bootstrap.js'))
  21. .pipe(gulp.dest('./js/'));
  22. gulp.src('./node_modules/jasny-bootstrap/dist/css/jasny-bootstrap.css')
  23. .pipe(rename('v3-jasny-bootstrap.css'))
  24. .pipe(gulp.dest('./css/'));
  25. gulp.src('./node_modules/animate.css/animate.css')
  26. .pipe(rename('v4-animate.css'))
  27. .pipe(gulp.dest('./css/'));
  28. gulp.src('./node_modules/svg-morpheus/compile/minified/svg-morpheus.js')
  29. .pipe(rename('v4-svg-morpheus.js'))
  30. .pipe(gulp.dest('./js/'));
  31. gulp.src('./node_modules/fullcalendar/main.js')
  32. .pipe(rename('v4-fullcalendar.js'))
  33. .pipe(gulp.dest('./js/', { overwrite:true } ));
  34. gulp.src('./node_modules/fullcalendar/main.css')
  35. .pipe(rename('v4-fullcalendar.css'))
  36. .pipe(gulp.dest('./css/', { overwrite:true } ));
  37. console.log("files 📄 from npm pkgs ");
  38. cb();
  39. }
  40. function build(cb) {
  41. return streamqueue({ objectMode: true },
  42. gulp.src('./css/fonts.css'),
  43. gulp.src('./css/v4-animate.css'),
  44. gulp.src('./css/v4-fullcalendar.css'),
  45. gulp.src('./css/styles.css'),
  46. gulp.src('./style.css')
  47. )
  48. .pipe(concat('v4-style.css'))
  49. .pipe(cleanCSS({level: {1: {specialComments: 0}}}))
  50. .pipe(rename('v4-style.min.css'))
  51. .pipe(gulp.dest('./', { overwrite:true })),
  52. console.log("Build 🔧 "),
  53. cb();
  54. }
  55. function css(cb) {
  56. return streamqueue({ objectMode: true },
  57. gulp.src('./css/fonts.css'),
  58. gulp.src('./css/v3-animate.css'),
  59. gulp.src('./css/v3-fullcalendar-daygrid.css'),
  60. gulp.src('./css/v3-fullcalendar.css'),
  61. gulp.src('./css/v3-bootstrap.css'),
  62. gulp.src('./style.css')
  63. )
  64. .pipe(concat('v3-style.css'))
  65. .pipe(cleanCSS({level: {1: {specialComments: 0}}}))
  66. .pipe(rename('v3-style.min.css'))
  67. .pipe(gulp.dest('./', { overwrite:true })),
  68. gulp.src('css/front-page.css')
  69. .pipe(cleanCSS({level: {1: {specialComments: 0}}}))
  70. .pipe(rename('v3-front.min.css'))
  71. .pipe(gulp.dest('./css/', { overwrite:true })),
  72. console.log("CSS built 🔧 "),
  73. cb();
  74. }
  75. function cssf(cb) {
  76. gulp.src('css/front-page.css')
  77. .pipe(cleanCSS({level: {1: {specialComments: 0}}}))
  78. .pipe(rename('v3-front.min.css'))
  79. .pipe(gulp.dest('./css/', { overwrite:true }));
  80. console.log("CSSF built 🔧 "),
  81. cb();
  82. }
  83. function js(cb) {
  84. return streamqueue({ objectMode: true },
  85. gulp.src('./js/v4-jquery.js'),
  86. gulp.src('./js/v4-bootstrap.js'),
  87. gulp.src('./js/v4-fullcalendar.js'),
  88. gulp.src('./js/modernizr.js'),
  89. gulp.src('./js/validate.js'),
  90. gulp.src('./js/scripts.js')
  91. )
  92. .pipe(terser({ output: {comments: false} }))
  93. .pipe(concat('v4-script.min.js'))
  94. .pipe(gulp.dest('./js/', { overwrite:true })),
  95. console.log("JS built 🔧 "),
  96. cb();
  97. }
  98. function jsf(cb) {
  99. return streamqueue({ objectMode: true },
  100. gulp.src('./js/v3-jquery.js'),
  101. gulp.src('./js/svg-morpheus.js'),
  102. gulp.src('./js/messenger.min.js'),
  103. gulp.src('./js/v3-bootstrap.js'),
  104. gulp.src('./js/terminal.js'),
  105. gulp.src('./js/front-page.js')
  106. )
  107. .pipe(concat('v3-front.js'))
  108. .pipe(uglify())
  109. .pipe(rename('v3-front.min.js'))
  110. .pipe(gulp.dest('./js/', { overwrite:true })),
  111. console.log("JSF built 🔧 "),
  112. cb();
  113. }
  114. function mixin(cb) {
  115. return gulp.src('./css/**/*.scss')
  116. .pipe(sass().on('error',sass.logError))
  117. .pipe(gulp.dest('./css/'))
  118. .pipe(browserSync.stream()),
  119. console.log("Mixin 🎨"),
  120. cb();
  121. }
  122. function reload(cb) {
  123. browserSync.reload();
  124. cb();
  125. }
  126. function run() {
  127. browserSync.init({
  128. open: 'external',
  129. host: 'daw.ovid',
  130. proxy: 'https://daw.ovid',
  131. port: '333',
  132. ssl: {
  133. key: '/opt/homebrew/etc/httpd/ssl/daw.ovid-key.pem',
  134. cert: '/opt/homebrew/etc/httpd/ssl/daw.ovid.pem'
  135. }
  136. });
  137. gulp.watch(['./style.css', './css/*.scss',]).on('change', gulp.series(mixin, build));
  138. gulp.watch(['./**/*.php', './**/*.js', './**/*.css']).on('change', gulp.series(reload));
  139. console.log("🔥 Run");
  140. }
  141. exports.copy = copy;
  142. exports.build = build;
  143. exports.css = css;
  144. exports.cssf = cssf;
  145. exports.js = js;
  146. exports.jsf = jsf;
  147. exports.mixin = mixin;
  148. exports.run = run;