Last active
December 13, 2016 11:51
-
-
Save totya24/864ba6849901cb30a03de5ec73b2f301 to your computer and use it in GitHub Desktop.
Our gulpfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var gulp = require('gulp'); | |
var gutil = require('gulp-util'); | |
var autoprefixer = require('gulp-autoprefixer'); | |
var sass = require('gulp-sass'); | |
var concat = require('gulp-concat'); | |
var cleanCSS = require('gulp-clean-css'); | |
var newer = require('gulp-newer'); | |
var uglify = require('gulp-uglify'); | |
var order = require("gulp-order"); | |
var cssBase64 = require('gulp-css-base64'); | |
var sourcemaps = require('gulp-sourcemaps'); | |
var csslint = require('gulp-csslint'); | |
var baseDir = [your/path]; | |
var devDirCss = baseDir + '/assets/css/scss/'; | |
var prodDirCss = baseDir + '/assets/css/'; | |
var devDirStorage = baseDir + '/assets/css/tmp/'; | |
var devDirJs = baseDir + '/assets/js/source/'; | |
var prodDirJs = baseDir + '/assets/js/'; | |
var cssOrder = ['base/reset.css','base/base.css','base/typo.css','base/helper.css','layouts/*.css','components/*.css','*.css']; | |
var jsOrder = ['package.*.js','extends.js','functions.js','init.js','*.js']; | |
/** Custom error logger - prevent crashing gulp task on error */ | |
function onError(err) { | |
gutil.log(gutil.colors.bgRed(err)); | |
gutil.beep(); | |
gutil.beep(); | |
gutil.beep(); | |
this.emit('end'); | |
err.emit('end'); | |
} | |
/** CSS lint - Rules: https://github.com/CSSLint/csslint/wiki/Rules-by-ID */ | |
gulp.task('lint', function(){ | |
return gulp.src(devDirStorage+'**/*.css') | |
.pipe(csslint({ | |
"important": true, | |
"adjoining-classes": false, | |
"known-properties": false, | |
"box-sizing": true, | |
"box-model": false, | |
"overqualified-elements": false, | |
"display-property-grouping": false, | |
"bulletproof-font-face": false, | |
"compatible-vendor-prefixes": false, | |
"regex-selectors": false, | |
"errors": true, | |
"duplicate-background-images": false, | |
"duplicate-properties": true, | |
"empty-rules": true, | |
"selector-max-approaching": false, | |
"gradients": false, | |
"fallback-colors": false, | |
"font-sizes": false, | |
"font-faces": false, | |
"floats": false, | |
"star-property-hack": false, | |
"outline-none": false, | |
"import": false, | |
"ids": false, | |
"underscore-property-hack": false, | |
"rules-count": false, | |
"qualified-headings": false, | |
"selector-max": false, | |
"shorthand": false, | |
"text-indent": false, | |
"unique-headings": false, | |
"universal-selector": false, | |
"unqualified-attributes": false, | |
"vendor-prefix": false, | |
"zero-units": true | |
})) | |
.pipe(csslint.reporter(customReporter)); | |
}); | |
/** custom CSSlint reporter */ | |
var customReporter = function(file) { | |
gutil.log(gutil.colors.inverse(file.path + ' - ' + file.csslint.errorCount + ' hiba')); | |
file.csslint.results.forEach(function(result) { | |
if(result.error.line){ | |
gutil.log(gutil.colors.cyan(result.error.line) + "\t\t" + result.error.message); | |
} else { | |
gutil.log(gutil.colors.bgRed(result.error.message)); | |
} | |
}); | |
gutil.log(""); | |
}; | |
/** CSS init - process all scss files on startup or deploy */ | |
gulp.task('initCss', function(){ | |
gulp.src(devDirCss+'**/*.scss') | |
.pipe(sass().on('error',gutil.log)) | |
.pipe(gulp.dest(devDirStorage).on('end',function(){ | |
gulp.src(devDirStorage+'**/*.css') | |
.pipe(sourcemaps.init()) | |
.pipe(order(cssOrder)) | |
.pipe(concat('style.css')) | |
.pipe(gulp.dest(prodDirCss)) | |
.pipe(cleanCSS()) | |
.pipe(autoprefixer()) | |
.pipe(cssBase64({ | |
baseDir: "../svg", | |
maxWeightResource: 1000, | |
extensionsAllowed: ['.svg'] | |
})) | |
.pipe(concat('style.min.css').on('end',function(){ | |
gutil.log(gutil.colors.green("init - scss files processed")); | |
})) | |
.pipe(sourcemaps.write('.',{includeContent: false, sourceRoot: 'tmp'})) | |
.pipe(gulp.dest(prodDirCss)); | |
}) | |
); | |
}); | |
/** Watch scss files, compile then concat into public folder and minify - watcher task, process only modified files */ | |
gulp.task('watchScss', function(){ | |
gulp.src(devDirCss+'**/*.scss') | |
.pipe(newer(devDirStorage)) | |
.pipe(sass().on('error',gutil.log)) | |
.pipe(gulp.dest(devDirStorage).on('end',function(){ | |
gutil.log(gutil.colors.green("watch - all scss files compiled")); | |
gulp.src(devDirStorage+'**/*.css') | |
.pipe(sourcemaps.init()) | |
.pipe(order(cssOrder)) | |
.pipe(concat('style.css').on('end',function(){ | |
gutil.log(gutil.colors.green("watch - style.css created")); | |
})) | |
.pipe(gulp.dest(prodDirCss)) | |
.pipe(cleanCSS()) | |
.pipe(autoprefixer()) | |
.pipe(cssBase64({ | |
baseDir: "../svg", | |
maxWeightResource: 1000, | |
extensionsAllowed: ['.svg'] | |
})) | |
.pipe(concat('style.min.css').on('end',function(){ | |
gutil.log(gutil.colors.green("watch - style.min.css created")); | |
})) | |
.pipe(sourcemaps.write('.',{includeContent: false, sourceRoot: 'tmp'})) | |
.pipe(gulp.dest(prodDirCss)); | |
}) | |
); | |
}); | |
/** Process javascript files, minify then copy into public folder - initial task, process all js */ | |
gulp.task('initJs', function() { | |
gulp.src(devDirJs+'*.js') | |
.pipe(uglify()) | |
.pipe(order(jsOrder)) | |
.pipe(concat('scripts.min.js')) | |
.pipe(gulp.dest(prodDirJs)) | |
.on('error', onError); | |
gutil.log(gutil.colors.yellow("init - js files processed")); | |
}); | |
/** Watch javascript files, minify then copy into public folder - watcher task, process only modified files */ | |
gulp.task('watchJs', function() { | |
gulp.src(devDirJs+'*.js') | |
.pipe(newer(prodDirJs)) | |
.pipe(uglify()) | |
.pipe(order(jsOrder)) | |
.pipe(concat('scripts.min.js')) | |
.pipe(gulp.dest(prodDirJs)) | |
.on('error', onError); | |
gutil.log(gutil.colors.yellow("watch - javascript files merged and minified")); | |
}); | |
/** Deploy task for automation - without watchers */ | |
gulp.task('deploy', ['initCss','initJs']); | |
/** Help task - list all available task with description */ | |
gulp.task('help', function() { | |
gutil.log(gutil.colors.green("initCss")+"\tLefordítja az scss fájlokat, autoprefixel, összefűz, minimalizál -> style.min.css"); | |
gutil.log(gutil.colors.green("watchScss")+"\tAz előző task watcher formája - csak a módosult fájlokkal dolgozik"); | |
gutil.log(gutil.colors.green("initJs")+"\tÖsszefűzi a javascript fájlokat, minimalizál ->scripts.min.js"); | |
gutil.log(gutil.colors.green("watchJs")+"\tAz előző task watcher formája - csak a módosult fájlokkal dolgozik"); | |
gutil.log(gutil.colors.green("deploy")+"\tLetuttatja az init taskokat"); | |
gutil.log(gutil.colors.green("lint")+"\t\tCss Lint a lefordított css fájlokra"); | |
gutil.log(gutil.colors.green("dafault")+"\tLetuttatja az init taskokat és elindítja a watchereket"); | |
}); | |
/** Default task - init and watcher */ | |
gulp.task('default', ['initCss','initJs'], function(){ | |
gulp.watch(devDirCss + '**/*.scss', ['watchScss']); | |
gulp.watch(devDirJs + '*.js', ['watchJs']); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment