Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@jirikrepl
Created August 31, 2016 08:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jirikrepl/2ba45e9220c8d2342129fbe700eaef9e to your computer and use it in GitHub Desktop.
Save jirikrepl/2ba45e9220c8d2342129fbe700eaef9e to your computer and use it in GitHub Desktop.
// Gulp with BrowserSync http://www.browsersync.io/docs/gulp/
// Gulp with Symfony framework: http://knpuniversity.com/screencast/gulp
// run "gulp" in development environment
// run "gulp --production" in production environment
var gulp = require('gulp'),
minifyCss = require('gulp-minify-css'),
//less = require('gulp-less'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
sourcemaps = require('gulp-sourcemaps'),
plumber = require('gulp-plumber'), // http://knpuniversity.com/screencast/gulp/errors-call-the-plumber
util = require('gulp-util'), // http://knpuniversity.com/screencast/gulp/minify-only-production
rev = require('gulp-rev'),
browserSync = require('browser-sync').create(),
del = require('del'),
git = require('gulp-git');
var c = function () {
var webRootDir = 'www/';
return {
assetDir: webRootDir,
lessDir: webRootDir + 'css/',
buildDir: webRootDir + 'build/',
jsAssetsDir: webRootDir + 'js/',
manifestFile: 'rev-manifest.json'
}
}();
var app = {};
/**
* This function isolates (put in one place) logic for processing less.* -> css.*
* @param {Array} paths -- array with source paths
* @param {string} outputFilename -- if defined concat source files into that filename. In undefined do not concat files (for calculator's pages specific style file)
**/
app.addStyle = function (paths, outputFilename) {
return gulp.src(paths)
.pipe(plumber())
.pipe(sourcemaps.init())
.pipe(outputFilename ? concat(outputFilename) : util.noop) // https://github.com/gulpjs/gulp-util#noop
//.pipe(less())
.pipe(concat(outputFilename))
.pipe(minifyCss({keepSpecialComments: 0}))
.pipe(rev())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(c.buildDir))
// write to rev-manifest file
.pipe(rev.manifest(c.manifestFile, {merge: true}))
.pipe(gulp.dest('.'))
.pipe(browserSync.stream());
};
/**
* This function isolates (puts in one place) logic for processing javascript files.
* @param {Array} paths -- array with source paths
* @param {string} outputFilename -- if defined concat source files into that filename. In undefined do not concat files (for calculator's pages specific style file)
**/
app.addJavaScript = function (paths, outputFilename) {
return gulp.src(paths)
.pipe(sourcemaps.init())
.pipe(outputFilename ? concat(outputFilename) : util.noop) // https://github.com/gulpjs/gulp-util#noop
.pipe(c.production ? uglify() : uglify({mangle: false, compress: false}))
.pipe(rev())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(c.buildDir))
// write to rev-manifest file
.pipe(rev.manifest(c.manifestFile, {merge: true}))
.pipe(gulp.dest('.'));
};
app.deleteFiles = function (paths) {
del(paths, function (err, paths) {
console.log('Deleted files/folders:\n', paths.join('\n'));
});
};
gulp.task('delete-less', function () {
return app.deleteFiles([c.buildDir + '*.css', c.buildDir + '*.css.map']);
});
gulp.task('less', ['delete-less'], function () {
return app.addStyle([c.lessDir + '*.css'], 'style.css');
});
gulp.task('delete-js', function () {
return app.deleteFiles([c.buildDir + '*.js', c.buildDir + '*.js.map']);
});
gulp.task('js', ['delete-js'], function () {
app.addJavaScript([c.jsAssetsDir + 'timeGraph.js'], 'timeGraph.js');
app.addJavaScript([c.jsAssetsDir + 'makeLesson.js'], 'makeLesson.js');
});
gulp.task('js-watch', ['js'], function () {
browserSync.reload();
});
gulp.task('serve', ['less', 'js'], function () {
browserSync.init({
proxy: "http://localhost/nedatluj/www/"
});
gulp.watch(c.lessDir + '*.css', ['less']);
gulp.watch(c.assetDir + '*').on('change', browserSync.reload);
gulp.watch(c.assetDir + 'html/*').on('change', browserSync.reload);
gulp.watch(c.assetDir + 'loginHtml/*').on('change', browserSync.reload);
gulp.watch(c.assetDir + 'js/*.js', ['js-watch']);
});
gulp.task('default', ['serve']);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment