gulp.task('sass', function() { var imagesManifest = env === PRODUCTION && USE_FINGERPRINTING ? (JSON.parse(fs.readFileSync("./"+BUILD+'/rev/images/rev-manifest.json', "utf8"))) : {}; var config = { errLogToConsole: true }; if (env === DEVELOPMENT) { config.sourceComments = 'map'; } else if (env === PRODUCTION) { config.outputStyle = 'compressed'; } return gulp.src(SRC+'/sass/main.scss') .pipe(duration('sass')) .pipe(plumber({ errorHandler: handleError })) .pipe(sass(config).on('error', gutil.log)) //.pipe(gulpif(env === PRODUCTION, prefix("last 2 versions", "> 1%", "ie 8", "ie 7", { cascade: true }))) .pipe(gulpif(env === PRODUCTION, uncss({ html: glob.sync(getOutputDir()+'/*.html'), ignore: [ 'input[type="radio"]', 'input[type="checkbox"]', /\[?\.ng[\-\.\w\d]+/,/::?-[\w\d]+\]?/i, /(.responsive|.datepicker|.loader|.spinner|.bounce|.error-message|.select2|.form-container).+/i, /(.radio|.checkbox|.has-feedback|.carousel|.btn|.popover|.form-control|.input-group|.breadcrumb).+/i ] }))) //.pipe(gulpif(env === PRODUCTION, csso())) .pipe(gulpif(env === PRODUCTION, minifyCSS())) .pipe(gulpif(env === PRODUCTION, size())) .pipe(gulpif(env === PRODUCTION && USE_FINGERPRINTING, fingerprint(imagesManifest, { base:'../images/', prefix: '../images/' }))) .pipe(gulpif(env === PRODUCTION && USE_FINGERPRINTING, rev())) .pipe(gulp.dest(getOutputDir()+ASSETS+'/css')) .pipe(gulpif(env === PRODUCTION && USE_FINGERPRINTING, rev.manifest())) .pipe(gulpif(env === PRODUCTION && USE_FINGERPRINTING, gulp.dest(BUILD+'/rev/css'))) });
gulp.task('stylesDist', ['imagesDist'], function () { var manifest = require('../../dist/image-manifest'); // See https://github.com/andrew/node-sass for more options return gulp.src('app/scss/app.scss') .pipe(sass({ includePaths: [config.bower + '/foundation/scss'] })) // .pipe(prefix('last 1 version')) // add vendor prefixes if necessary .pipe(fingerprint(manifest, {verbose: true})) .pipe(csso()) // minify css .pipe(gulp.dest(config.dist + '/styles')) .pipe(size()); });
gulp.task('jade', function() { var config = { "production": env === PRODUCTION, "pretty": env === DEVELOPMENT, "locals": { "production": env === PRODUCTION } }; var jsManifest = env === PRODUCTION && USE_FINGERPRINTING ? (JSON.parse(fs.readFileSync("./"+BUILD+'/rev/js/rev-manifest.json', "utf8"))) : {}, //vendorManifest = env === PRODUCTION ? (JSON.parse(fs.readFileSync("./"+BUILD+'/rev/js-vendor/rev-manifest.json', "utf8"))) : {}, cssManifest = env === PRODUCTION && USE_FINGERPRINTING? (JSON.parse(fs.readFileSync("./"+BUILD+'/rev/css/rev-manifest.json', "utf8"))) : {}, imagesManifest = env === PRODUCTION && USE_FINGERPRINTING ? (JSON.parse(fs.readFileSync("./"+BUILD+'/rev/images/rev-manifest.json', "utf8"))) : {}; gulp.src(SRC+"/templates/"+jadeFiles+".jade") .pipe(duration('jade')) .pipe(jade(config).on('error', gutil.log)) .pipe(gulpif(env === PRODUCTION && USE_FINGERPRINTING, fingerprint(jsManifest, { base:'assets/js/', prefix: 'assets/js/' }))) //.pipe(gulpif(env === PRODUCTION && USE_FINGERPRINTING, fingerprint(vendorManifest, { base:'assets/js/', prefix: 'assets/js/' }))) .pipe(gulpif(env === PRODUCTION && USE_FINGERPRINTING, fingerprint(cssManifest, { base:'assets/css/', prefix: 'assets/css/' }))) .pipe(gulpif(env === PRODUCTION && USE_FINGERPRINTING, fingerprint(imagesManifest, { base:'assets/images/', prefix: 'assets/images/' }))) .pipe(gulpif(env === PRODUCTION, size())) .pipe(gulp.dest(getOutputDir())).on('end', function() { if (watching) livereload.changed(''); }); });
gulp.task("scss-to-css", function() { var fingerprintManifest = "./vendor/rev-manifest.json", fingerprintOptions = { base: "/fonts/", prefix: "/assets/", mode: "replace"}; return gulp.src([ "./node_modules/pg-styleguide-assets/components/**/*.scss", "./node_modules/pg-styleguide-assets/stylesheets/**/*.scss", "!./node_modules/pg-styleguide-assets/stylesheets/application/base.scss" ]) .pipe(sass({ errLogToConsole: true, includePaths: [ "./node_modules/pg-styleguide-assets/stylesheets" ] })) .pipe(fingerprint(fingerprintManifest, fingerprintOptions)) .pipe(gulp.dest("./vendor/.compiled/")); });
new Elixir.Task('fingerprint', function() { this.log(paths.src, paths.output); var onError = function (e) { new Elixir.Notification().error(e, 'Fingerprinting Failed!'); this.emit('end'); }; var manifest = require(__dirname + '/../../' + manifestFile); return gulp.src(paths.src.path) .on('error', onError) .pipe(fingerprint(manifest, { base: options.base || '/', prefix: options.prefix || '/build/' })) .pipe(gulp.dest(paths.output.baseDir)) .pipe(new Elixir.Notification('Fingerprinting Compiled')); })