Snippets

Michael Schramm kEajb: Untitled snippet

Created by Michael Schramm last modified Michael Schramm
var gulp = require('gulp');
var sass = require('gulp-sass');
var bowerFiles = require('main-bower-files');
var concat = require('gulp-concat');
var sourceMaps = require('gulp-sourcemaps');
var templateCache = require('gulp-angular-templatecache');
var minifyCSS = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var size = require('gulp-size');
var eslint = require('gulp-eslint');

// local server logic
var browserSync = require('browser-sync').create();
var historyApiFallback = require('connect-history-api-fallback');


gulp.task('css', function(){
	var files = bowerFiles('**/*.css');
	files.push('custom/main.scss');

	return gulp.
			src(files)
			.pipe(sourceMaps.init())
			.pipe(sass())
			.pipe(concat("styles.css"))
			.pipe(minifyCSS())
			.pipe(sourceMaps.write('./'))
			.pipe(gulp.dest('public/static/'))
			.pipe(size({title: 'CSS', gzip: false}))
			.pipe(browserSync.stream({match: '**/*.css'}))
			;
});

// TODO fix lint errors
gulp.task('lint', function() {
	return gulp.src('custom/**/*.js')
			.pipe(eslint())
			.pipe(eslint.format())
			.pipe(eslint.failAfterError())
		;
});

gulp.task('js', function(){
	var files = bowerFiles('**/*.js');
	return gulp.src(files)
			.pipe(sourceMaps.init())
			//.pipe(uglify())
			.pipe(concat('scripts.js'))
			.pipe(sourceMaps.write('./'))
			.pipe(size({title: 'JS', gzip: false}))
			.pipe(gulp.dest('public/static/'))
			.on('end', browserSync.reload);
});

gulp.task('tpl', function() {
	return gulp.src('public/static/tpl/**/*.html')
			.pipe(templateCache(
					{
						filename:'templates.js',
						root: 'static/tpl/',
						templateHeader: 'angular.module("app.tpl", []).run(["$templateCache", function($templateCache) {'
					}
			))
			.pipe(size({title: 'TPL', gzip: false}))
			.pipe(gulp.dest('public/static/'))
			.on('end', browserSync.reload);
});

gulp.task('serve', ['js', 'css'], function() {
    var config = {
		settings: {
			client_id: client_id,
			marketplace: marketplace,
			site_id: site_id
		}
	};


	browserSync.init({
		ui: {
			port: basePort+3,
			weinre: {
				port: basePort+2
			}
		},
		port: basePort,
		snippetOptions: {
			rule: {
				match: /<\/head>/i,
				fn: function (snippet, match) {
					return '<script type="text/javascript">var mymarket = '+JSON.stringify(config)+';</script>'+snippet+match;
				}
			}
		},
		server: {
			baseDir: "./public",
			middleware: [
				historyApiFallback()
			]
		}
	});

	gulp.watch([
		'custom/**/*.js'
	], ['js']);

	gulp.watch([
		"public/index.html",
		"public/static/tpl/**/*.html"
	], ['tpl']);

	gulp.watch([
		"custom/**/*.scss"
	], ['css']);
});
{
  "devDependencies": {
    "gulp": "*",
    "gulp-concat": "^2.6.0",
    "gulp-connect": "^2.2.0",
    "gulp-minify-css": "*",
    "gulp-replace": "^0.5.4",
    "gulp-sass": "*",
    "gulp-sourcemaps": "*",
    "gulp-uglify": "^1.2.0",
    "eslint-config-angular": "^0.4.0",
    "eslint-plugin-angular": "^0.15.0"
  },
  "dependencies": {
    "browser-sync": "^2.10.0",
    "connect-history-api-fallback": "^1.1.0",
    "eslint": "^1.10.3",
    "gulp-angular-templatecache": "^1.8.0",
    "gulp-eslint": "^1.1.1",
    "gzip-size": "^3.0.0",
    "main-bower-files": "^2.9.0"
  },
  "_aerobatic": {
    "router": [
      {
        "module": "client-settings",
        "options": {
          "client_id": "env:CLIENT_ID",
          "site_id": "env:SITE_ID",
          "marketplace": "env:MARKETPLACE"
        }
      },
      {
        "module": "webpage",
        "options": {
          "pushState": true,
          "clientConfigVar": "mymarket"
        }
      }
    ]
  }
}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.