Skip to content

Instantly share code, notes, and snippets.

@wdmtech
Created February 15, 2016 21:46
Show Gist options
  • Save wdmtech/752209a27304711266da to your computer and use it in GitHub Desktop.
Save wdmtech/752209a27304711266da to your computer and use it in GitHub Desktop.
gulpfile.js
var gulp = require('gulp');
var gutils = require('gulp-util');
var elixir = require('laravel-elixir');
require('laravel-elixir-imagemin');
require('laravel-elixir-browsersync');
require('laravel-elixir-modernizr');
var b = elixir.config.js.browserify;
var cssnext = require("gulp-cssnext");
var less = require('gulp-less');
var autoprefixer = require('gulp-autoprefixer');
var minifyCSS = require('gulp-minify-css');
var fontmin = require('gulp-fontmin');
var googleWebFonts = require('gulp-google-webfonts');
var resourcesDir = './resources/';
var jsDir = './resources/assets/js/';
var siteJSDir = './resources/assets/js/site/';
var bowerDir = './resources/assets/bower/';
var publicJSDir = './public/js/';
var allJS = './public/js/all.js';
var imageminOptions = { optimizationLevel: 1, progressive: true, interlaced: true };
/*
|--------------------------------------------------------------------------
| Elixir Asset Management
|--------------------------------------------------------------------------
|
| Elixir provides a clean, fluent API for defining some basic Gulp tasks
| for your Laravel application. By default, we are compiling the Sass
| file for our application, as well as publishing vendor resources.
|
| http://laravel.com/docs/5.0/elixir
|
*/
/*
* Edit resources/fonts.list to get any Google web-font
* todo : this would be nice wrapped up for Elixir
*/
gulp.task('fonts', function () {
return gulp.src('./resources/fonts.list')
.pipe(googleWebFonts())
.pipe(gulp.dest('./public/build/css'));
});
gulp.task('fontmin', function () {
return gulp.src(bowerDir + 'google-fonts/ofl/titilliumweb/*.ttf')
.pipe(fontmin({
}))
.pipe(gulp.dest('./public/build/fonts/'));
});
gulp.task("basscss", function() {
gulp.src(resourcesDir + "/assets/less/basscss/src/base.css")
.pipe(cssnext({
compress: true
}))
.pipe(gulp.dest("./public/build/basscss"))
});
///
if(gutils.env._.indexOf('watch') > -1){
b.plugins.push({
name: "browserify-hmr",
options : {}
});
}
///
elixir(function (mix) {
mix.copy(bowerDir + "wdmtech-css-helpers/src/less", "resources/assets/less"); // todo : put in resources/less/imports folder?
// louisremi/background-size-polyfill : https://github.com/louisremi/background-size-polyfill
mix.copy(bowerDir + "background-size-polyfill/backgroundsize.min.htc", "public/build/css");
// IE8 specific stylesheet
mix.copy(resourcesDir + "assets/css/site/ie8.css", "public/build/css");
// mix.sass("app.scss")
// https://viget.com/extend/gulp-browserify-starter-faq
// todo : Clean this up!
mix.less([
// app
"_fonts.less",
// Vendor overrides
"_nprogress.less",
// wdmtech/css-helpers
"_breadcrumbs.less",
"_messages.less",
"_mixins.less",
"_pagination.less",
"_vue.less",
// site
"site/default.less",
"site/_mobile_menu.less",
"site/_fonts.less",
"site/_lists.less"
], "public/css/all.css")
.styles([
//////////////////////////
// Libraries/Frameworks //
//////////////////////////
"public/build/basscss/base.css",
bowerDir + "normalize-css/normalize.css",
/////////////////
// UI Elements //
/////////////////
bowerDir + "hint.css/hint.css",
bowerDir + "messenger/build/css/*.css",
bowerDir + "animate.css/animate.css",
bowerDir + "codemirror/lib/codemirror.css",
bowerDir + "prism/themes/prism.css",
//bowerDir + "nprogress/nprogress.css",
resourcesDir + "assets/css/flags/flag-icon.css",
//bowerDir + "gritcode-components/dist/gritcode-components.css",
"public/css/all.css",
"public/build/css/fonts.css"
//"public/build/fonts/TitilliumWeb-Regular.css"
], 'public/css/all.css', './');
mix.scripts([
//////////////////////////
// Libraries/Frameworks //
//////////////////////////
"jquery-legacy/jquery.js",
//"jquery-modern/dist/jquery.js",
///////////////////////////
// Polyfills/Shims/Shivs //
///////////////////////////
"console-polyfill/index.js",
"es5-shim/es5-shim.js",
"html5shiv/dist/html5shiv.js",
"respond/dest/respond.src.js",
"selectivizr/selectivizr.js",
/////////////////
// UI Elements //
/////////////////
"messenger/build/js/messenger.js",
"slicknav/dist/jquery.slicknav.min.js",
"codemirror/lib/codemirror.js",
"codemirror/addon/mode/overlay.js",
"codemirror/addon/runmode/runmode.js",
"codemirror/addon/runmode/colorize.js",
"codemirror/mode/xml/xml.js",
"codemirror/mode/javascript/javascript.js",
"codemirror/mode/css/css.js",
"codemirror/mode/php/php.js",
"codemirror/mode/markdown/markdown.js",
"codemirror/mode/gfm/gfm.js",
//"gritcode-components/dist/gritcode-components.js",
"prism/prism.js",
"prism/components/prism-php.js",
"prism/components/prism-php-extras.js",
//"nprogress/nprogress.js",
//////////////////
// File uploads //
//////////////////
"blueimp-file-upload/js/vendor/jquery.ui.widget.js",
"blueimp-file-upload/js/jquery.iframe-transport.js",
"blueimp-file-upload/js/jquery.fileupload.js",
////////////////
// Formatters //
////////////////
"wnumb/wNumb.js",
/////////////
// Helpers //
/////////////
"wdmtech-js-helpers/src/externallinks.jquery.js",
"wdmtech-js-helpers/src/scrolltotop.jquery.js",
jsDir + "utils/BrowserDetect.js",
// Custom
publicJSDir + "vendor/modernizr-custom.js",
///////////////////////
// Custom JavaScript //
///////////////////////
// Formatters
jsDir + "formatters/CurrencyFormatter.js"
], allJS, bowerDir);
mix.browserify('main.js');
mix.browserSync({
files: [
elixir.config.appPath + '/**/*.php',
elixir.config.get('public.css.outputFolder') + '/**/*.css',
elixir.config.get('public.versioning.buildFolder') + '/rev-manifest.json',
'resources/views/**/*.php'
], proxy: 'laravel-start-point.app'
});
mix.version(["css/all.css", "js/all.js", "js/vendor/modernizr-custom.js"]);
//mix.modernizr();
elixir.config.images = {
//folder: 'xxx'
outputFolder: './images/min'
};
mix.imagemin();
//mix.browserSync({ proxy: "laravel-start-point.app" });
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment