SimpleManGuy

Untitled

Dec 3rd, 2020
783
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const gulp = require("gulp");
  2. const plumber = require("gulp-plumber");
  3. const sourcemap = require("gulp-sourcemaps");
  4. const sass = require("gulp-sass");
  5. const postcss = require("gulp-postcss");
  6. const autoprefixer = require("autoprefixer");
  7. const csso = require("gulp-csso");
  8. const rename = require("gulp-rename");
  9. const sync = require("browser-sync").create();
  10. const imagemin = require("gulp-imagemin");
  11. const svgstore = require("gulp-svgstore");
  12. const webp = require("gulp-webp");
  13. const uglify = require('gulp-uglify-es').default;
  14. const ghPages = require('gulp-gh-pages');
  15.  
  16. // Deploy
  17. gulp.task('deploy', function () {
  18.   return gulp.src('./build/**/*')
  19.     .pipe(ghPages());
  20. });
  21.  
  22. // Styles
  23.  
  24. const styles = () => {
  25.   return gulp.src("src/sass/style.scss")
  26.     .pipe(plumber())
  27.     .pipe(sourcemap.init())
  28.     .pipe(sass())
  29.     .pipe(postcss([
  30.       autoprefixer()
  31.     ]))
  32.     .pipe(gulp.dest("build/css"))
  33.     .pipe(csso())
  34.     .pipe(rename("styles.min.css"))
  35.     .pipe(sourcemap.write("."))
  36.     .pipe(gulp.dest("build/css"))
  37.     .pipe(sync.stream());
  38. }
  39. exports.styles = styles;
  40.  
  41. // Server
  42.  
  43. const server = (done) => {
  44.   sync.init({
  45.     server: {
  46.       baseDir: 'build'
  47.     },
  48.     cors: true,
  49.     notify: false,
  50.     ui: false,
  51.   });
  52.   done();
  53. }
  54.  
  55. exports.server = server;
  56.  
  57. // Watcher
  58. const watcher = () => {
  59.   gulp.watch("src/sass/**/*.scss", {
  60.     delay: 500
  61.   }, gulp.series("styles"));
  62.   gulp.watch("src/*.html", {
  63.     delay: 500
  64.   }, gulp.series("copyHtml"));
  65.   gulp.watch("build/*.html").on("change", sync.reload);
  66.   gulp.watch("src/js/*.js", {
  67.     delay: 500
  68.   }, gulp.series("js"));
  69.   gulp.watch("build/js/*.js").on("change", sync.reload);
  70. }
  71.  
  72. // Clean
  73. const del = require("del");
  74. const clean = () => {
  75.   return del("build");
  76. };
  77. exports.clean = clean;
  78.  
  79. // Copy
  80.  
  81. const copyFonts = () => {
  82.   return gulp.src("src/fonts/**/*.{woff,woff2}")
  83.     .pipe(gulp.dest("build/fonts"));
  84. };
  85. exports.copyFonts = copyFonts;
  86.  
  87. const copyHtml = () => {
  88.   return gulp.src([
  89.       "src/*.html"
  90.     ])
  91.     .pipe(gulp.dest("build"));
  92. };
  93. exports.copyHtml = copyHtml;
  94.  
  95. const js = () => {
  96.   return gulp.src("src/js/*.js")
  97.     .pipe(gulp.dest("build/js"))
  98.     .pipe(uglify())
  99.     .pipe(rename({
  100.       suffix: '.min'
  101.     }))
  102.     .pipe(gulp.dest("build/js"));
  103. };
  104. exports.js = js;
  105.  
  106. // Images
  107.  
  108. const images = () => {
  109.   return gulp.src("src/img/**/*.{jpg,png,svg}")
  110.     .pipe(imagemin([
  111.       imagemin.optipng({
  112.         quality: 75,
  113.         optimizationLevel: 3
  114.       }),
  115.       imagemin.mozjpeg({
  116.         progressive: true
  117.       }),
  118.       imagemin.svgo()
  119.     ]))
  120.     .pipe(gulp.dest("build/img"));
  121. };
  122. exports.images = images;
  123.  
  124. // Sprite
  125.  
  126. const sprite = () => {
  127.   return gulp.src([
  128.       "build/img/**/icon-*.svg",
  129.       "build/img/**/logo-htmlacademy.svg",
  130.       "build/img/**/logo-footer.svg"
  131.     ])
  132.     .pipe(svgstore())
  133.     .pipe(rename("sprite.svg"))
  134.     .pipe(gulp.dest("build/img"))
  135. }
  136. exports.sprite = sprite;
  137.  
  138. // Webp
  139.  
  140. const createWebp = () => {
  141.   return gulp.src("build/img/**/*.{png,jpg}")
  142.     .pipe(webp({
  143.       quality: 90
  144.     }))
  145.     .pipe(gulp.dest("build/img"))
  146. }
  147. exports.webp = createWebp;
  148.  
  149. // Build
  150.  
  151. const build = gulp.series(
  152.   clean,
  153.   styles,
  154.   images,
  155.   sprite,
  156.   createWebp,
  157.   copyFonts,
  158.   copyHtml,
  159.   js
  160. );
  161. exports.build = build
  162.  
  163. exports.default = gulp.series(
  164.   build, server, watcher
  165. );
Advertisement
Add Comment
Please, Sign In to add comment