Source

Modified ago
fs = require 'fs' gulp = require 'gulp' rename = require 'gulp-rename' pug = require 'gulp-pug' sass = require 'gulp-dart-sass' csso = require 'gulp-csso' coffee = require 'gulp-coffee' cson = require 'gulp-cson' webpack = require 'webpack-stream' responsive = require 'gulp-responsive' superstatic = require 'superstatic' livereload = require 'livereload' del = require 'del' patterns = pug: 'public/views/*.pug' source: 'public/views/source.pug' sass: 'public/stylesheets/**/*.sass' coffee: 'public/scripts/**/*.coffee' cson: 'public/data/**/*.cson' webpack: 'public/scripts/main.js' image: 'public/images/galleries/*' # Start development server serve = -> server = superstatic.server host: '0.0.0.0' port: 8080 config: 'host': '0.0.0.0' 'trailingSlash': false 'headers': [ 'source': '**/*' 'headers': [ 'key': 'Cache-Control' 'value': 'max-age=0' ] ] server.listen -> console.log 'Server running on port ' + 8080 return live = livereload.createServer extraExts: [ 'html' ] exclusions: [ __dirname + "/node_modules" ] live.watch __dirname return # Compile views gulp.task 'pug', -> gulp.src [patterns.pug, "!#{patterns.source}"] .pipe pug locals: __dirname: __dirname require: require .pipe rename (path) -> # These should be in the root directory if path.basename isnt 'index' and path.basename isnt '404' path.dirname += '/' + path.basename # Don't change 404 filename unless path.basename is '404' path.basename = 'index' path.extname = '.html' return .pipe gulp.dest './' # Compile source pages # Need a different task for the source page because it takes a long time to compile gulp.task 'source', -> gulp.src patterns.source .pipe pug locals: __dirname: __dirname require: require .pipe rename (path) -> path.dirname += '/' + path.basename path.basename = 'index' path.extname = '.html' return .pipe gulp.dest './' # Compile stylesheets gulp.task 'sass', -> gulp.src 'public/stylesheets/main.sass' .pipe do sass .pipe do csso .pipe gulp.dest 'public/stylesheets/' # Compile scripts gulp.task 'coffee', -> gulp.src patterns.coffee .pipe coffee bare: true .pipe gulp.dest 'public/scripts/' # Pack scripts gulp.task 'webpack', -> gulp.src patterns.webpack .pipe webpack config: mode: 'production' output: filename: 'main.min.js' .pipe gulp.dest 'public/scripts/' # Compile data gulp.task 'cson', -> gulp.src patterns.cson .pipe do cson .pipe gulp.dest 'public/data' # Create thumbnails gulp.task 'image', -> gulp.src patterns.image .pipe responsive '*': format: 'jpg' height: 250 quality: 50 withoutEnlargement: false .pipe gulp.dest 'public/images/galleries/thumbnails' # Watch files gulp.task 'watch', -> gulp.watch 'public/views/**/*.pug', gulp.series 'pug' gulp.watch patterns.source, gulp.series 'source' gulp.watch patterns.sass, gulp.series 'sass' gulp.watch patterns.coffee, gulp.series 'coffee', 'webpack' gulp.watch patterns.cson, gulp.series 'cson', 'pug' gulp.watch patterns.image, gulp.series 'image' do serve return # Build everything gulp.task 'build', gulp.series 'cson', 'coffee', 'webpack', 'sass', 'image', 'pug', 'source' # Clean up files gulp.task 'clean', -> del fs.readFileSync("#{__dirname}/.gitignore", 'utf-8').split '\n'