gulpfile.js 5.14 KB
'use strict';
/* global require, __dirname, console  */

var gulp = require('gulp');
// var sass = require('gulp-sass');
var sass = require('gulp-ruby-sass');
var connect = require('gulp-connect');

// gulp.task('sass', function () {
//   gulp.src('./sass/**/*.scss')
//     .pipe(sass().on('error', sass.logError))
//     .pipe(gulp.dest('.'))
//     .pipe(connect.reload());
// });

gulp.task('sass', function() {
  return sass('./sass/style.sass')
    .on('error', function(err) {
      console.error('Error', err.message);
    })
    .pipe(gulp.dest('.'))
    .pipe(connect.reload());
});

gulp.task('watch', function() {
  gulp.watch('./sass/**/*.sass', ['sass']);
});

gulp.task('connect', function() {
  connect.server({
    port: 3000,
    root: [__dirname],
    livereload: true
  });
});

gulp.task('connect_dist', ['clean',  'copyResources', 'sass', 'compileJS',  'htmlReplace'], function() {
  connect.server({
    port: 3000,
    root: ['./dist'],
    livereload: false
  });
});


gulp.task('default', ['sass', 'connect', 'watch']);

//var htmlusemin = require('gulp-usemin-html');
var useRef = require('gulp-useref');
var minifyCss = require('gulp-minify-css');
var rev = require('gulp-rev');
var revReplace = require('gulp-rev-replace');
var uglify = require('gulp-uglify');
var gulpif = require('gulp-if');
var filter = require('gulp-filter');
var sourcemaps = require('gulp-sourcemaps');
var requirejsOptimize = require('gulp-requirejs-optimize');
var concat = require('gulp-concat');
var copy = require('gulp-copy');
var add = require("gulp-add");

gulp.task('copyResources', function(){
  gulp.src(["./*.html", "style.css", "./fonts/**/*.*", "./favicon.ico", "./images/**/*.*"])
    .pipe(copy('dist/'));
});


gulp.task('compileJS', function() {
  var mainInit =
    "require.config({  paths: {    \"main\": \"main-bundled\"  }});require([\"main\"]);";
  return gulp.src('js/main.js')
    //.pipe(sourcemaps.init())
    .pipe(requirejsOptimize({
      baseUrl: 'js',
      name: 'main',
      //generateSourceMaps: true,
      optimize: "none",
      preserveLicenseComments: false,
      findNestedDependencies: true,
      mainConfigFile: 'js/main.js',
      paths: {
        requireLib: "require",
        jquery: 'jquery-2.1.3.min',
        jquery_xdomainrequest: 'jquery.xdomainrequest.min',
        jquery_ui: 'jquery-ui-1.11.4.custom/jquery-ui.min',
        jquery_cookie: 'jquery.cookie',
        jquery_timeago: 'jquery.timeago',
        jquery_timeago_pt: 'jquery.timeago.pt-br',
        jquery_simplePagination: 'jquery.simplePagination',
        jquery_equalHeights: 'jquery.equalHeights',
        jquery_footable: 'footable',
        handlebars: 'handlebars-v3.0.1',
        handlebars_helpers: 'handlebars-helpers',
        jquery_maxlength: 'jquery.maxlength.min',
        slick: 'slick.min',
        fastclick: 'fastclick.min',
        layout: 'layout',
        main: 'main',
        proposal_app: 'proposal-app'
      },
    shim: {
      'handlebars':{
        deps: ['jquery'],
        exports: 'Handlebars'
      },
      'jquery_xdomainrequest': {
        deps: ['jquery']
      },
      'jquery_cookie': {
        deps: ['jquery']
      },
      'jquery_timeago': {
        deps: ['jquery']
      },
      'jquery_timeago_pt': {
        deps: ['jquery_timeago']
      },
      'jquery_simplePagination': {
        deps: ['jquery']
      },
      'jquery_equalHeights': {
        deps: ['jquery']
      },
      'footable': {
        deps: ['jquery']
      },
      'jquery_ui': {
        deps: ['jquery']
      },
      'layout': {
        deps: ['jquery']
      },
      'jquery_maxlength': {
        deps: ['jquery']
      },
      'slick': {
        deps: ['jquery']
      },
      'fastclick': {
        deps: ['jquery']
      },
      'handlebars_helpers':{
        deps: ['handlebars']
      },
      'proposal_app' :{
        deps: ['jquery'],
        exports: 'ProposalApp'
      }
    },
      include: ["requireLib"],
      out: "dist/main.min.js"
    }).on('error', function(error) {
      console.log(error);
    }))
    .pipe(add('dist/main-init.js', mainInit))
    .pipe(concat('dist/main-bundled.js'))
    //.pipe(sourcemaps.write('./'))
    .pipe(gulp.dest('./'));
});


gulp.task('htmlReplace', ['clean', 'sass', 'copyResources', 'compileJS'],function() {
  var assets;
  var jsFilter = filter("./dist/main-bundled.js");
  var cssFilter = filter("dist/*.css");
  return gulp.src('dist/index.html')
    .pipe(assets = useRef.assets())
    .pipe(sourcemaps.init())
    .pipe(rev())
    .pipe(gulpif('*.js', uglify()))
    .pipe(assets.restore())
    .pipe(useRef())
    .pipe(revReplace())
    .pipe(gulpif('*.css', minifyCss({
      sourceMap: true
    })))

  .pipe(assets.restore())
    .pipe(useRef())
    .pipe(revReplace())
    .pipe(sourcemaps.write('./'))
    .pipe(assets.restore())
    .pipe(gulp.dest('dist/'));
});

var del = require('del');

gulp.task('clean', function(cb) {
  del([
    'dist/*.*'
  ], cb);
});

gulp.task('build', ['clean',  'copyResources', 'sass', 'compileJS',  'htmlReplace']);