Created
August 17, 2019 18:32
-
-
Save DennisKraaijeveld/5800fcf421da6855226b6e16bad5286a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import named from 'vinyl-named'; | |
import webpack from 'webpack-stream'; | |
import browserSync from "browser-sync"; | |
import del from 'del'; | |
import imagemin from 'gulp-imagemin'; | |
import postcss from 'gulp-postcss'; | |
import sourcemaps from 'gulp-sourcemaps'; | |
import autoprefixer from 'autoprefixer'; | |
import tailwindcss from 'tailwindcss' | |
import { src, dest, watch, series, parallel } from 'gulp'; | |
import yargs from 'yargs'; | |
import sass from 'gulp-sass'; | |
import cleanCss from 'gulp-clean-css'; | |
import gulpif from 'gulp-if'; | |
const PRODUCTION = yargs.argv.prod; | |
export const styles = () => { | |
return src('src/scss/bundle.scss') | |
.pipe(gulpif(!PRODUCTION, sourcemaps.init())) | |
.pipe(sass().on('error', sass.logError)) | |
.pipe(gulpif(PRODUCTION, postcss([ tailwindcss('./tailwind.config.js'), (autoprefixer), ]))) | |
.pipe(gulpif(PRODUCTION, cleanCss({compatibility:'ie8'}))) | |
.pipe(gulpif(!PRODUCTION, sourcemaps.write())) | |
.pipe(dest('dist/css')) | |
.pipe(server.stream()); | |
} | |
export const watchForChanges = () => { | |
watch('src/scss/**/*.scss', styles); | |
watch('src/images/**/*.{jpg,jpeg,png,svg,gif}', series(images, reload)); | |
watch(['src/**/*','!src/{images,js,scss}','!src/{images,js,scss}/**/*'], series(copy, reload)); | |
watch('src/js/**/*.js', series(scripts, reload)); | |
watch("**/*.php", reload); | |
} | |
export const images = () => { | |
return src('src/images/**/*.{jpg,jpeg,png,svg,gif}') | |
.pipe(gulpif(PRODUCTION, imagemin())) | |
.pipe(dest('dist/images')); | |
} | |
export const copy = () => { | |
return src(['src/**/*','!src/{images,js,scss}','!src/{images,js,scss}/**/*']) | |
.pipe(dest('dist')); | |
} | |
export const clean = () => del(['dist']); | |
export const scripts = () => { | |
return src(['src/js/bundle.js','src/js/admin.js']) | |
.pipe(named()) | |
.pipe(webpack({ | |
module: { | |
rules: [ | |
{ | |
test: /\.js$/, | |
use: { | |
loader: 'babel-loader', | |
options: { | |
presets: [] | |
} | |
} | |
} | |
] | |
}, | |
mode: PRODUCTION ? 'production' : 'development', | |
devtool: !PRODUCTION ? 'inline-source-map' : false, | |
output: { | |
filename: '[name].js' | |
}, | |
externals: { | |
jquery: 'jQuery' | |
}, | |
})) | |
.pipe(dest('dist/js')); | |
} | |
const server = browserSync.create(); | |
export const serve = done => { | |
server.init({ | |
proxy: "http://delfthof.test" | |
}); | |
done(); | |
}; | |
export const reload = done => { | |
server.reload(); | |
done(); | |
}; | |
export const dev = series(clean, parallel(styles, images, copy, scripts), serve, watchForChanges); | |
export const build = series(clean, parallel(styles, images, copy, scripts)); | |
export default dev; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment