Created
December 4, 2014 12:54
-
-
Save AlexandreBroudin/cdbfcba717a67efd0e39 to your computer and use it in GitHub Desktop.
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
// global | |
var browserSync = require('browser-sync'); | |
var gulp = require('gulp'); | |
var plumber = require('gulp-plumber'); | |
var ignore = require('gulp-ignore') | |
// css | |
var prefix = require('gulp-autoprefixer'); | |
var urlAdjuster = require('gulp-css-url-adjuster'); | |
var cssmin = require('gulp-cssmin'); | |
var rename = require('gulp-rename'); | |
var sass = require('gulp-sass'); | |
var sourcemaps = require('gulp-sourcemaps'); | |
// icons, pictos | |
var consolidate = require('gulp-consolidate'); | |
var filter = require('gulp-filter'); | |
var iconfont = require('gulp-iconfont'); | |
var svgmin = require('gulp-svgmin'); | |
var tinypng = require('gulp-tinypng'); | |
var sprites = require('gulp-svg-sprites'); | |
var svg2png = require('gulp-svg2png'); | |
var sketch = require('gulp-sketch'); | |
// docs | |
var docco = require('gulp-docco'); | |
var kss = require('gulp-kss'); | |
// tasks | |
var defaultTasks = ['custo-orga-build']; | |
var devCSStask = function(opts){ | |
return gulp.src(opts.srcPath) | |
.pipe(plumber()) | |
.pipe(sass({ | |
errLogToConsole: true | |
})) | |
.pipe(prefix('last 2 versions', 'ff 4')) | |
.pipe(rename(opts.newFileName)) | |
.pipe(urlAdjuster({ | |
append: "?v="+(new Date()).getTime() | |
})) | |
.pipe(gulp.dest('web/build/frontend/css')); | |
}; | |
var distCSStask = function(opts){ | |
var excludePath = opts.exclude || '*.min.css'; | |
return gulp.src(opts.srcPath) | |
.pipe(plumber()) | |
.pipe(ignore.exclude(excludePath)) | |
.pipe(cssmin({ | |
keepSpecialComments: '0', | |
processImport: false | |
})) | |
.pipe(rename(opts.renameOpts)) | |
.pipe(gulp.dest('web/build/frontend/css')); | |
}; | |
// apps | |
var apps = [ | |
{ name: 'business', ie: true }, | |
{ name: 'desktop', ie: true }, | |
{ name: 'home', ie: true }, | |
{ name: 'fullscreen', ie: true }, | |
{ name: 'mobile', ie: true }, | |
{ name: 'print', ie: false }, | |
{ name: 'touch', ie: false } | |
]; | |
// browserSync | |
gulp.task('bs:serve', function(){ | |
return browserSync.init('web/build/frontend/css/**', { | |
host: 'http://app.wisembly.dev/index_dev.php' | |
}); | |
}); | |
gulp.task('bs:reload', function(){ | |
return browserSync.reload({ | |
stream: true | |
}); | |
}); | |
// apps:dev | |
apps.forEach(function(app){ | |
var appname = app.name; | |
gulp.task(appname + ':dev', function(){ | |
// gulp home:dev | |
devCSStask({ | |
srcPath: 'web/frontend/apps/'+ appname +'/sass/app.scss', | |
newFileName: 'app_'+ appname +'.css' | |
}); | |
if(app.ie){ | |
devCSStask({ | |
srcPath: 'web/frontend/apps/'+ appname +'/sass/app-ie.scss', | |
newFileName: 'app_'+ appname +'-ie.css' | |
}); | |
} | |
}); | |
gulp.task(appname + ':watch', function(){ | |
return gulp.watch([ | |
'web/frontend/apps/'+ appname +'/sass/**/*.scss', | |
'web/frontend/core/sass/**/*.scss' | |
], [ | |
appname + ':dev', | |
'bs:reload' | |
]); | |
}); | |
gulp.task(appname, [ | |
appname + ':dev', | |
'bs:serve', | |
appname + ':watch' | |
]); | |
return defaultTasks.push(appname + ':dev'); | |
}); // forEach | |
// apps:dist | |
gulp.task('dist', function(){ | |
distCSStask({ | |
srcPath: 'web/build/frontend/css/**/*.css', | |
renameOpts: { | |
suffix: '.min' | |
} | |
}); | |
}); | |
// custo-orga|:dev|:dist|:watch| | |
gulp.task('custo-orga', function(){ | |
var arg = process.argv[3].split('--')[1]; | |
var hasAction = arg.split(':').length > 1; | |
var organame = hasAction ? arg.split(':')[0] : arg; | |
var action = hasAction ? arg.split(':')[1] : false; | |
gulp.task(organame + ':dev', function(){ | |
devCSStask({ | |
srcPath: 'web/frontend/custom/organization/'+ organame +'/sass/app.scss', | |
newFileName: organame + '.css' | |
}); | |
}); | |
gulp.task(organame + ':dist', function(){ | |
distCSStask({ | |
srcPath: 'web/build/frontend/css/'+ organame +'.css', | |
renameOpts: { | |
suffix: '.min' | |
} | |
}); | |
}); | |
gulp.task(organame + ':watch', function(){ | |
gulp.watch(['web/frontend/custom/organization/**/*.scss'], [ | |
organame + ':dev', | |
'bs:reload' | |
]); | |
}); | |
if(hasAction){ | |
gulp.start(organame + ':' + action); | |
return; | |
} | |
gulp.start([ | |
organame + ':dev', | |
'bs:serve', | |
organame + ':watch' | |
]); | |
}); | |
gulp.task('custo-orga-build', function(){ | |
devCSStask({ | |
srcPath: './web/frontend/custom/organization/**/sass/app.scss', | |
newFileName: function(path){ | |
path.basename = path.dirname.split('/sass')[0].toString() | |
path.dirname = ""; | |
} | |
}); | |
}); | |
gulp.task('icons', function(){ | |
return gulp.src('web/frontend/core/sketch/icons.sketch') | |
.pipe(sketch({ | |
export: 'slices', | |
formats: 'svg', | |
compact: 'yes', | |
saveForWeb: 'yes' | |
})) | |
.pipe(gulp.dest('web/frontend/core/svg/icons/')) | |
.pipe(iconfont({ | |
fontName: 'icons', | |
appendCodepoints: false, | |
normalize: true, | |
centerHorizontally: true, | |
fontHeight: 100 // IMPORTANT | |
})) | |
.on('codepoints', function(codepoints, options) { | |
var iconsOptions = { | |
glyphs: codepoints, | |
fontName: 'icons', | |
fontPath: '/frontend/core/font/', | |
className: 'icon', | |
} | |
// recent browsers | |
gulp.src('doc/fonts/icon-template.css') | |
.pipe(consolidate('lodash', iconsOptions)) | |
.pipe(rename('icons.scss')) | |
.pipe(gulp.dest('web/frontend/core/sass/components/icons/')); | |
// ie | |
gulp.src('doc/fonts/icon-template-ie.css') | |
.pipe(consolidate('lodash', iconsOptions)) | |
.pipe(rename('icons-ie.scss')) | |
.pipe(gulp.dest('web/frontend/core/sass/components/icons/')); | |
}) | |
.pipe(gulp.dest('web/frontend/core/font/')); | |
}); | |
gulp.task('pictos', function(){ | |
return gulp.src('web/frontend/core/sketch/pictos.sketch') | |
.pipe(sketch({ | |
export: 'slices', | |
formats: 'svg', | |
compact: 'yes', | |
saveForWeb: 'yes' | |
})) | |
.pipe(gulp.dest('web/frontend/core/svg/pictos')) | |
.pipe(sprites({ | |
padding: 0, | |
common: 'p', | |
layout: 'horizontal', | |
templates: { | |
css: require('fs').readFileSync('./doc/pictos/picto-template.css', 'utf-8'), | |
previewSprite: require('fs').readFileSync('./doc/pictos/picto-template.html', 'utf-8') | |
}, | |
cssFile: '../sass/components/pictos/_pictos.scss', | |
preview: false, | |
svg: { | |
sprite: 'pictos.svg' | |
}, | |
svgPath: '/frontend/core/images/%f', | |
pngPath: '/frontend/core/images/%f', | |
})) | |
.pipe(svgmin()) | |
.pipe(gulp.dest('./web/frontend/core/images')) | |
.pipe(filter('**/*.svg')) | |
.pipe(svg2png()) | |
.pipe(tinypng('IqkzldHCKO383hUTufE-BtwzbN-fia7P')) | |
.pipe(gulp.dest('./web/frontend/core/images')); | |
}); | |
gulp.task('styleguide', function(){ | |
gulp.src(['web/frontend/**/*.scss']) | |
.pipe(kss({ | |
templateDirectory: 'doc/styleguide/template/' | |
})) | |
.pipe(gulp.dest('web/build/styleguide/')) | |
}); | |
gulp.task('default', defaultTasks); | |
// GENERATING DOCCO FOR JOJO_JS | |
// gulp.task('docco-helpers', function() { | |
// gulp.src('web/frontend/core/js/helpers/helper_amcharts.js') | |
// .pipe(docco({ | |
// tempalce: 'docco/layouts/wisembly', | |
// languages: { | |
// '.js': { | |
// 'name': 'javascript', | |
// 'symbol': '//=' | |
// } | |
// } | |
// })) | |
// .pipe(gulp.dest('web/build/docco/helpers')) | |
// }); | |
// gulp.task('docco-mixins', function() { | |
// gulp.src(['web/frontend/core/js/mixins/mixins_view_taggable.js', 'web/frontend/core/js/mixins/mixins_model_taggable.js']) | |
// .pipe(docco({ | |
// layout: '../../../../../docco/layouts/wisembly', | |
// languages: { | |
// '.js': { | |
// 'name': 'javascript', | |
// 'symbol': '//=' | |
// } | |
// } | |
// })) | |
// .pipe(gulp.dest('web/build/docco/mixins')) | |
// }); | |
// gulp.task('docco', ['docco-mixins', 'docco-helpers']); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment