'use strict'; var gulp = require('gulp'); var gulpif = require('gulp-if'); var sass = require('gulp-sass'); var watch = require('gulp-watch'); var autoprefixer = require('gulp-autoprefixer'); var jsmin = require('gulp-jsmin'); var stripDebug = require('gulp-strip-debug'); var cssmin = require('gulp-cssmin'); var rename = require('gulp-rename'); var mainBowerFiles = require('main-bower-files'); // var jsonToSass = require('gulp-json-to-sass'); // var concat = require('gulp-concat'); var svgmin = require('gulp-svgmin'); // var fs = require('fs'); // var json2js = require('gulp-json2js'); // var data = require('gulp-data'); // var shared_variables = JSON.parse(fs.readFileSync('./assets/json/shared_variables.json')); // to get minified assets run `gulp --env=prod` var argv = require('minimist')(process.argv.slice(2)); console.dir(argv); var prod = argv.env == 'prod' ? true : false; function handleError(err) { console.log(err.toString()); } gulp.task('scripts', done => { gulp.src(['./assets/scripts/main.js', './assets/scripts/redirect.js']) // './assets/scripts/shared_variables.js', // .pipe(concat('main.js')) .pipe(gulpif(prod, stripDebug())) .pipe(gulpif(prod, jsmin())) .pipe(rename({suffix: '.min'})) .pipe(gulp.dest('./assets/dist/scripts/')); done() }); gulp.task('styles', done => { gulp.src(['./assets/styles/app.scss']) .pipe(sass().on('error', sass.logError)) .pipe(autoprefixer({ browsers: ['last 2 versions'], cascade: false })).on('error', handleError) // .pipe(prod ? cssmin() : util.noop()) .pipe(gulpif(prod, cssmin())) // .pipe(cssmin()) .pipe(rename({suffix: '.min'})) .pipe(gulp.dest('./assets/dist/styles/')); done() }); gulp.task('bower', done => { gulp.src(mainBowerFiles({ "overrides":{ "masonry-layout":{ "main":"./dist/masonry.pkgd.min.js" }, "imagesloaded":{ "main":"./imagesloaded.pkgd.min.js" }, "jquery":{"ignore":true}, "ev-emitter":{"ignore":true}, "fizzy-ui-utils":{"ignore":true}, "get-size":{"ignore":true}, "outlayer":{"ignore":true}, } })) .pipe(gulp.dest('./assets/dist/bower/')); done() }); gulp.task('svg', done => { gulp.src(['./assets/img/*.svg', '!./assets/img/edlp-loader-anim.svg']) .pipe(svgmin()) .pipe(gulp.dest('./assets/dist/img')); gulp.src('./assets/img/edlp-loader-anim.svg') .pipe(gulp.dest('./assets/dist/img')); done() }); // default gulp task // , 'vars2sass' 'vars2js', // gulp.task('default', ['bower', 'scripts', 'styles', 'svg'], function() { gulp.task('default', gulp.series('bower', 'scripts', 'styles', 'svg', function(done) { // gulp.watch('./assets/json/*.json', ['vars2js', 'styles', 'scripts']); //, 'vars2sass' gulp.watch('./assets/styles/*.scss', gulp.series('styles')); gulp.watch('./assets/styles/base/*.scss', gulp.series('styles')); gulp.watch('./assets/scripts/*.js', gulp.series('scripts')); gulp.watch('./assets/img/*.svg', gulp.series('svg')); done() })); // this task stays here just for memeomry about how to share variables between js and css // gulp.task('vars2sass', function () { // gulp.src('./assets/json/shared_variables.json') // .pipe(jsonToSass({ // jsonPath: './assets/json/shared_variables.json', // scssPath: './assets/styles/base/_shared_variables.scss' // })); // }); // this one is not working, works first run but then it's like it's caching the source // gulp.task('variables2js', function() { // gulp.src('./assets/scripts/shared_variables_model.js') // .pipe(rename('shared_variables.js')) // .pipe(data(function(file) { // delete require.cache['./assets/json/shared_variables.json']; // return require('./assets/json/shared_variables.json'); // })) // .pipe(json2js()) // .pipe(gulp.dest('./assets/scripts/')); // }); // gulp.task('vars2js', function() { // gulp.src('./assets/json/shared_variables.json') // .pipe(rename('shared_variables.js')) // .pipe(through.obj(function (file, enc, cb) { // // console.log('file',String(file.contents)); // // small pipe to wrappe json data into a js variable // file.contents = new Buffer("edlp_vars = "+String(file.contents).trim()+";"); // cb(null, file); // })) // .pipe(gulp.dest('./assets/scripts/')); // });