gulp

mail@pastecode.io avatarunknown
javascript
a month ago
2.5 kB
2
Indexable
Never
const gulp = require('gulp');
const sass = require('gulp-sass')(require('sass'));
const ts = require('gulp-typescript');
const postcss = require('gulp-postcss');
const tailwindcss = require('tailwindcss');
const autoprefixer = require('autoprefixer');
const terser = require('gulp-terser');
const cleanCSS = require('gulp-clean-css');

//* copy html
gulp.task('html:copy', function () {
  return gulp.src('./*.html')
  .pipe(gulp.dest('./dist'));
});

//* copy font
gulp.task('font:copy', function () {
  return gulp.src('./assets/font/*.woff2')
  .pipe(gulp.dest('./dist/assets/font'));
});

// * compress image
gulp.task('img:compress', function () {
  return import('gulp-imagemin').then(function (imagemin) {
    return gulp.src("./assets/img/**/*")
      .pipe(imagemin.default())
      .pipe(gulp.dest("./dist/assets/img"));
  });
});

// * compress icon
gulp.task('icon:compress', function () {
  return import('gulp-imagemin').then(function (imagemin) {
    return gulp.src("./assets/icon/**/*")
      .pipe(imagemin.default())
      .pipe(gulp.dest("./dist/assets/icon"));
  });
});

//* compile typescript
const tsProject = ts.createProject('tsconfig.json');
gulp.task('typescript:compile', function () {
  return tsProject.src()
    .pipe(tsProject())
    .js
    .pipe(terser())
    .pipe(gulp.dest('./dist/assets/js'));
});
gulp.task('typescript:watch', function () {
  gulp.watch('./assets/ts/**/*.ts', gulp.series('typescript:compile'));
});

//* compile sass
gulp.task('sass:compile', function () {
  return gulp.src('./assets/scss/**/*.scss')
    .pipe(sass().on('error', sass.logError))
    .pipe(postcss([autoprefixer()]))
    .pipe(cleanCSS())
    .pipe(gulp.dest('./dist/assets/css'));
});
gulp.task('sass:watch', function () {
  gulp.watch('./assets/scss/**/*.scss', gulp.series('sass:compile'));
});

//* compile tailwind
gulp.task('tailwind:compile', function () {
  return gulp.src('./assets/css/global/tailwind.css')
    .pipe(postcss([tailwindcss()]))
    .pipe(cleanCSS())
    .pipe(gulp.dest('./dist/assets/css/global'));
});
gulp.task('tailwind:watch', function () {
  gulp.watch('./assets/css/global/tailwind.css', gulp.series('tailwind:compile'));
});

//* run tasks
gulp.task('default', gulp.parallel('html:copy','font:copy', 'img:compress', 'icon:compress', 'typescript:compile', 'typescript:watch', 'sass:compile', 'sass:watch', 'tailwind:compile', 'tailwind:watch'));