Skip to content

Instantly share code, notes, and snippets.

@tomkr
Created April 20, 2016 19:56
Show Gist options
  • Save tomkr/1a6642c6b861735a77194df9a94152af to your computer and use it in GitHub Desktop.
Save tomkr/1a6642c6b861735a77194df9a94152af to your computer and use it in GitHub Desktop.
Gulpfile for Rails with livereload
'use strict';
var gulp = require('gulp');
var sass = require('gulp-sass');
var livereload = require('gulp-livereload');
var babel = require('babelify');
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var exec = require('child_process').exec;
gulp.task('sass', function () {
gulp.src('./app/assets/stylesheets/application.scss')
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('./public/assets/stylesheets'))
.pipe(livereload());
});
gulp.task('js', function() {
browserify('./app/assets/javascripts/application.js')
.transform(babel, {presets: ['es2015']})
.bundle()
.pipe(source('application.js'))
.pipe(gulp.dest('./public/assets/javascripts'))
.pipe(livereload());
});
gulp.task('watch', function(cb) {
exec('bin/rails s', function(err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
cb(err);
});
livereload.listen();
gulp.watch('./app/assets/stylesheets/**/*.scss', ['sass']);
gulp.watch('./app/assets/javascripts/**/*.js', ['js']);
gulp.watch('./app/views/**/*.html.erb').on('change', function(file) {
livereload.changed(file.path);
});
});
gulp.task('build', ['sass', 'js']);
@tomkr
Copy link
Author

tomkr commented Apr 20, 2016

This is a simple Gulpfile I create to get some kind of livereloading functionality in a Rails app that doesn't use Sprockets. It relies on a way to have a livereload plugin in your app, gem 'rack-livereload' for instance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment