Skip to content

Instantly share code, notes, and snippets.

@simofacc
Last active March 16, 2016 18:13
Show Gist options
  • Save simofacc/ba8078e7e54ff6a54418 to your computer and use it in GitHub Desktop.
Save simofacc/ba8078e7e54ff6a54418 to your computer and use it in GitHub Desktop.
Gulp setup
/**
* Created by simonfacciol on 13/02/16.
*/
var gulp = require('gulp'),
fs = require('fs'),
del = require('del'),
plugins = require('gulp-load-plugins')({
pattern: ['gulp-*', 'gulp.*'],
replaceString: /\bgulp[\-.]/,
lazy: true,
camelize: true
}),
sassOptions = {outputStyle: 'expanded'},
autoprefixerOptions = {
browsers: ['last 2 versions', '> 10%', 'Explorer >= 9', 'Android >= 4.1', 'Safari >= 7', 'iOS >= 7']
};
function getPackageJsonVersion() {
// We parse the json file instead of using require because require caches
// multiple calls so the version number won't be updated
return JSON.parse(fs.readFileSync('./package.json', 'utf8')).version;
};
gulp.task('styles', function () {
return gulp.src('src/scss/all.scss')
.pipe(plugins.sass(plugins.sass(sassOptions).on('error', plugins.sass.logError)))
.pipe(plugins.autoprefixer(autoprefixerOptions))
.pipe(gulp.dest('public/assets/css'))
.pipe(plugins.rename({suffix: '.' + getPackageJsonVersion() + '.min'}))
.pipe(plugins.cssnano())
.pipe(gulp.dest('public/assets/css'))
.pipe(plugins.notify({message: 'Styles task complete'}));
});
gulp.task('scripts', function () {
return gulp.src('src/scripts/**/*.js')
.pipe(plugins.jshint('.jshintrc'))
.pipe(plugins.jshint.reporter('default'))
.pipe(plugins.concat('all.js'))
.pipe(gulp.dest('public/assets/js'))
.pipe(plugins.rename({suffix: '.' + getPackageJsonVersion() + '.min'}))
.pipe(plugins.uglify())
.pipe(gulp.dest('public/assets/js'))
.pipe(plugins.notify({message: 'Scripts task complete'}));
});
gulp.task('clean', function () {
return del(['public/assets/css', 'public/assets/js']);
});
gulp.task('bump-version', ['clean'], function () {
return gulp.src(["./package.json"])
.pipe(plugins.bump({type: "patch"}))
.pipe(gulp.dest("./"));
});
gulp.task('default', ['bump-version'], function () {
gulp.start('styles', 'scripts');
});
gulp.task('watch', function () {
// Create LiveReload server
plugins.livereload.listen();
// Watch .scss files
gulp.watch('src/scss/**/*.scss', ['styles']);
// Watch .js files
gulp.watch('src/scripts/**/*.js', ['scripts']);
// Watch any files in public/, reload on change
gulp.watch(['public/**']).on('change', plugins.livereload.changed);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment