166 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
/* ------------------------------------------------------------------------------
 | 
						|
 *
 | 
						|
 *  # Gulp file
 | 
						|
 *
 | 
						|
 *  Basic Gulp tasks for Limitless template
 | 
						|
 *
 | 
						|
 *  Version: 1.0
 | 
						|
 *  Latest update: Dec 2, 2015
 | 
						|
 *
 | 
						|
 * ---------------------------------------------------------------------------- */
 | 
						|
 | 
						|
var gulp = require('gulp');
 | 
						|
 | 
						|
/* set project paths */
 | 
						|
 | 
						|
var baseProject = '.';
 | 
						|
 | 
						|
var project = {
 | 
						|
    sass: baseProject + '/src/sass',
 | 
						|
    css: baseProject + '/css',
 | 
						|
    js: baseProject + '/src/js',
 | 
						|
    cssDist: baseProject + '/dist/css',
 | 
						|
    jsDist: baseProject + '/dist/js'
 | 
						|
};
 | 
						|
 | 
						|
// Include our plugins
 | 
						|
var autoprefixer = require('autoprefixer');
 | 
						|
var concat = require('gulp-concat');
 | 
						|
var cssnano = require('gulp-cssnano');
 | 
						|
var minify = require('gulp-minify');
 | 
						|
var postcss = require('gulp-postcss');
 | 
						|
var rename = require('gulp-rename');
 | 
						|
var sass = require('gulp-sass');
 | 
						|
 | 
						|
// Compile scss files
 | 
						|
gulp.task('scss', function() {
 | 
						|
    return gulp
 | 
						|
        .src(project.sass + '/*.scss')
 | 
						|
        .pipe(sass().on('error', sass.logError))
 | 
						|
        .pipe(gulp.dest(project.css)); // create normal CSS
 | 
						|
});
 | 
						|
 | 
						|
// add vendor prefixes - https://github.com/postcss/postcssk
 | 
						|
gulp.task('postcss', ['scss'], function() {
 | 
						|
    // scss has to be finished before postcss
 | 
						|
    return gulp
 | 
						|
        .src(project.css + '/*.css')
 | 
						|
        .pipe(postcss([autoprefixer({ browsers: ['last 4 versions'] })]))
 | 
						|
        .pipe(gulp.dest(project.css));
 | 
						|
});
 | 
						|
 | 
						|
// optimise css - http://cssnano.co/
 | 
						|
gulp.task('cssnano', ['postcss'], function() {
 | 
						|
    // postcss has to be finished before cssnano
 | 
						|
    return gulp
 | 
						|
        .src([project.css + '/*.css', '!' + project.css + '/*.min.css']) // exclude .min.css
 | 
						|
        .pipe(cssnano({ zindex: false, minifyFontValues: false, discardUnused: false }))
 | 
						|
        .pipe(
 | 
						|
            rename({
 | 
						|
                suffix: '.min' // add *.min suffix
 | 
						|
            })
 | 
						|
        )
 | 
						|
        .pipe(gulp.dest(project.css));
 | 
						|
});
 | 
						|
 | 
						|
gulp.task('combinecss', ['cssnano'], function() {
 | 
						|
    // cssnano has to be finished before combinecss
 | 
						|
    return gulp
 | 
						|
        .src([project.css + '/*.min.css'])
 | 
						|
        .pipe(concat('material-datepicker.min.css'))
 | 
						|
        .pipe(gulp.dest(project.cssDist));
 | 
						|
});
 | 
						|
 | 
						|
// Create minified js
 | 
						|
gulp.task('minifyjs', function() {
 | 
						|
    return gulp
 | 
						|
        .src([project.js + '/**/**/*.js', '!' + project.js + '/**/**/*.min.js'])
 | 
						|
        .pipe(
 | 
						|
            minify({
 | 
						|
                ext: {
 | 
						|
                    src: '.js',
 | 
						|
                    min: [/(.*)\.js$/, '$1.min.js']
 | 
						|
                },
 | 
						|
                noSource: true
 | 
						|
            })
 | 
						|
        )
 | 
						|
        .pipe(gulp.dest(project.js));
 | 
						|
});
 | 
						|
// Combine js files
 | 
						|
gulp.task('combinejs', ['minifyjs'], function() {
 | 
						|
    // minifyjs has to be finished before combinejs
 | 
						|
 | 
						|
    /* =================================================================
 | 
						|
        Important: each disabled src has to be disabled the same way in
 | 
						|
        phpformbuilder/plugins/materialize/src/js/global.js M.AutoInit()
 | 
						|
    ================================================================= */
 | 
						|
 | 
						|
    return gulp
 | 
						|
        .src([
 | 
						|
            // project.js + '/cash.js',
 | 
						|
            // project.js + '/component.js',
 | 
						|
            // project.js + '/global.js',
 | 
						|
            // project.js + '/anime.js',
 | 
						|
            // project.js + '/collapsible.js',
 | 
						|
            // project.js + '/dropdown.js',
 | 
						|
            // project.js + '/modal.js',
 | 
						|
            // project.js + '/materialbox.js',
 | 
						|
            // project.js + '/parallax.js',
 | 
						|
            // project.js + '/tabs.js',
 | 
						|
            // project.js + '/tooltip.js',
 | 
						|
            // project.js + '/waves.js',
 | 
						|
            // project.js + '/toasts.js',
 | 
						|
            // project.js + '/sidenav.js',
 | 
						|
            // project.js + '/scrollspy.js',
 | 
						|
            // project.js + '/autocomplete.js',
 | 
						|
            // project.js + '/forms.js',
 | 
						|
            // project.js + '/slider.js',
 | 
						|
            // project.js + '/cards.js',
 | 
						|
            // project.js + '/chips.js',
 | 
						|
            // project.js + '/pushpin.js',
 | 
						|
            // project.js + '/buttons.js',
 | 
						|
            project.js + '/datepicker.js'
 | 
						|
            // project.js + '/timepicker.js',
 | 
						|
            // project.js + '/characterCounter.js',
 | 
						|
            // project.js + '/carousel.js',
 | 
						|
            // project.js + '/tapTarget.js',
 | 
						|
            // project.js + '/select.js'
 | 
						|
            // project.js + '/range.js'
 | 
						|
        ])
 | 
						|
        .pipe(concat('material-datepicker.min.js'))
 | 
						|
        .pipe(gulp.dest(project.jsDist));
 | 
						|
});
 | 
						|
 | 
						|
/* =============================================
 | 
						|
    WATCH & DIST
 | 
						|
============================================= */
 | 
						|
 | 
						|
gulp.task('watch', function() {
 | 
						|
    // Watch files for changes
 | 
						|
    gulp.watch(project.sass + '/**/*.scss', ['sass']);
 | 
						|
 | 
						|
    gulp.watch(project.js + '/**/*.js', ['scripts']);
 | 
						|
});
 | 
						|
 | 
						|
// main SASS task
 | 
						|
gulp.task('sass', ['scss', 'postcss', 'cssnano', 'combinecss']);
 | 
						|
 | 
						|
// main SCRIPTS task
 | 
						|
gulp.task('scripts', ['minifyjs', 'combinejs']);
 | 
						|
 | 
						|
gulp.task('dist', [
 | 
						|
    // dist all concat & minified files
 | 
						|
    'scss',
 | 
						|
    'postcss',
 | 
						|
    'cssnano',
 | 
						|
    'combinecss',
 | 
						|
    'minifyjs',
 | 
						|
    'combinejs'
 | 
						|
]);
 | 
						|
 | 
						|
// Default task
 | 
						|
gulp.task('default', [
 | 
						|
    // list of default tasks
 | 
						|
    'watch' // watch for changes
 | 
						|
]);
 |