|
// gulpfile.js -- place this in the theme dir |
|
// Usage: from command line, run `gulp` to watch and auto-compile SCSS and coffeescript |
|
// To minify files, run `gulp build --env production` |
|
|
|
var gulp = require('gulp'); |
|
var gulpif = require('gulp-if'); |
|
var sass = require('gulp-sass'); |
|
var sourcemaps = require('gulp-sourcemaps'); |
|
var autoprefixer = require('gulp-autoprefixer'); |
|
var coffee = require("gulp-coffee"); |
|
var uglify = require("gulp-uglify"); |
|
var concat = require("gulp-concat"); |
|
|
|
// ... variables |
|
var autoprefixerOptions = { |
|
browsers: ['last 2 versions', '> 5%', 'Firefox ESR'] |
|
}; |
|
|
|
var input = './styles/style.scss'; |
|
var output = './'; |
|
|
|
var isProduction = gulp.env.env === 'prod' || gulp.env.env === 'production'; |
|
var uglifying = isProduction; |
|
|
|
var sassOptions = { |
|
errLogToConsole: true, |
|
outputStyle: isProduction ? 'compressed' : 'expanded', |
|
}; |
|
|
|
// compiles scss file: in styles/style.scss to ./style.css |
|
gulp.task('sass', function () { |
|
return gulp |
|
.src(input) |
|
.pipe(sass(sassOptions).on('error', sass.logError)) |
|
.pipe(autoprefixer(autoprefixerOptions)) |
|
.pipe(gulp.dest(output)); |
|
}); |
|
|
|
// list all JS/coffee files here |
|
var jsFiles = [ |
|
'js/source/my-js-file.js', |
|
'js/source/my-coffee-file.coffee' |
|
]; |
|
|
|
// compiles js files (listed above) to js/application.js |
|
gulp.task('js', function () { |
|
gulp.src(jsFiles) |
|
.pipe(gulpif('**/*.coffee', coffee())) |
|
.pipe(concat('application.js')) // concat files |
|
.pipe( gulpif(uglifying, uglify()) ) |
|
.pipe(gulp.dest('js/')); |
|
}); |
|
|
|
gulp.task('watch', function() { |
|
gulp.watch('./styles/**/*.scss', ['sass']); |
|
gulp.watch('./js/source/**/*', ['js']); |
|
}); |
|
|
|
gulp.task('build', ['sass', 'js']); |
|
gulp.task('default', ['sass', 'js', 'watch']); |