var gulp = require('gulp'); var rename = require('gulp-rename'); var sass = require('gulp-sass'); var cssminify = require('gulp-csso'); var concat = require('gulp-concat'); var uglify = require('gulp-uglify'); // ---------------------------------- // Config // ---------------------------------- var config = { sass: { pattern: 'app/assets/sass/**/*.scss', src: 'app/assets/sass/application.scss', opt: { includePaths: [ 'node_modules/bootstrap-sass/assets/stylesheets' ] }, outputDir: 'public/css', outputName: 'application' }, js: { src: [ 'node_modules/jquery/dist/jquery.js', // Bootstrap 'node_modules/bootstrap-sass/assets/javascripts/bootstrap.js', // Font Awesome 'app/assets/js/font-awesome/regular.js', 'app/assets/js/font-awesome/solid.js', 'app/assets/js/font-awesome/brands.js', 'app/assets/js/font-awesome/fontawesome.js' ], outputDir: 'public/js' } }; // ---------------------------------- // Tasks // ---------------------------------- gulp.task('build-css', function () { return gulp.src(config.sass.src) .pipe(sass(config.sass.opt)) .pipe(cssminify()) .pipe(rename({ basename: config.sass.outputName, suffix: '.min'})) .pipe(gulp.dest(config.sass.outputDir)) }); gulp.task('watch-sass', function() { gulp.watch(config.sass.pattern, ['build-css']); }); gulp.task('build-js', function () { return gulp.src(config.js.src) .pipe(uglify()) .pipe(concat('application.min.js')) .pipe(gulp.dest(config.js.outputDir)); }); gulp.task('build-assets', ['build-css', 'build-js']); gulp.task('default', ['watch-sass']);