UNPKG

dynamic-bind-html

Version:

A replacement for ng-bind-html that compiles angular code, too.

147 lines (128 loc) 3.98 kB
/** * Credit goes to angular-directive-boilerplate * https://www.npmjs.com/package/angular-directive-boilerplate * Heavily modified. * * In some cases commands must be run twice to succeed. * TODO: Replace Gulp with webpack and update dev dependencies. */ var del = require('del'); var fs = require('fs'); var gulp = require('gulp'); var autoprefixer = require('gulp-autoprefixer'); var babel = require("gulp-babel"); var connect = require('gulp-connect'); var header = require('gulp-header'); var gutil = require('gulp-util'); var jshint = require('gulp-jshint'); var open = require('gulp-open'); var plumber = require('gulp-plumber'); var rename = require('gulp-rename'); var sass = require('gulp-sass'); var uglify = require('gulp-uglify'); var karma = require('karma').Server; var config = { pkg : JSON.parse(fs.readFileSync('./package.json')), banner: '/*!\n' + ' * <%= pkg.name %>\n' + ' * <%= pkg.homepage %>\n' + ' * Version: <%= pkg.version %> - <%= timestamp %>\n' + ' * License: <%= pkg.license %>\n' + ' */\n\n\n' }; gulp.task('connect', function() { connect.server({ root: [__dirname], livereload: true }); }); gulp.task('html-reload', function () { gulp.src(['./demo/src/*.html', '.src/*.html']) .pipe(connect.reload()); }); gulp.task('sass-demo', function () { return gulp.src('./demo/**/*.scss') .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError)) .pipe(gulp.dest('./demo')); }); gulp.task('css-demo', ['sass-demo'], function () { gulp.src(['./demo/src/*.css']) .pipe(autoprefixer()) .pipe(rename({suffix: '.min'})) .pipe(gulp.dest('./demo')) .pipe(connect.reload()); del(['demo/**/*.css']); }); gulp.task('build-demo', function () { gulp.src('./demo/src/*.js') .pipe(plumber({errorHandler: handleError})) .pipe(babel({presets:['es2015']})) .pipe(uglify({ preserveComments: 'none', mangle: false })) .pipe(rename({suffix: '.min'})) .pipe(gulp.dest('./demo')) .pipe(connect.reload()); }); gulp.task('watch', function () { gulp.watch(['./**/*.html'], ['html-reload']); gulp.watch(['./demo/src/*.scss'], ['css-demo']); gulp.watch(['./demo/src/*.js'], ['build-demo']); gulp.watch(['./src/*.js'], ['build']); }); gulp.task('clean', function(cb) { del(['dist/**/*'], cb); }); gulp.task('build', ['clean'], function() { gulp.src('src/dynamic-bind-html.js') .pipe(plumber({errorHandler: handleError})) .pipe(jshint({esversion: 6})) .pipe(jshint.reporter('jshint-stylish')) .pipe(header(config.banner, { timestamp: (new Date()).toISOString(), pkg: config.pkg })) .pipe(babel({presets:['es2015']})) .pipe(gulp.dest('./dist')) .pipe(uglify({ preserveComments: 'some', mangle: false })) .pipe(rename({suffix: '.min'})) .pipe(gulp.dest('./dist')) .pipe(connect.reload()); }); gulp.task('open', function() { gulp.src('./demo/src/demo.html') .pipe(open('', {url: 'http://localhost:8080/demo/src/demo.html'})); }); gulp.task('jshint-test', function() { gulp.src('./test/**/*.js') .pipe(plumber({errorHandler: handleError})) .pipe(jshint({esversion: 6})) .pipe(jshint.reporter('jshint-stylish')); }); gulp.task('karma', function (done) { karma.start({ configFile: __dirname + '/karma.conf.js', singleRun: true }, function() { done(); // anonymous function fixes formatError }); }); gulp.task('karma-serve', function(done) { karma.start({ configFile: __dirname + '/karma.conf.js' }, function() { done(); // anonymous function fixes formatError }); }); function handleError(err) { console.log(err.toString()); this.emit('end'); }; gulp.task('test', ['build', 'jshint-test', 'karma']); gulp.task('serve', ['build', 'build-demo', 'css-demo', 'connect', 'watch', 'open']); gulp.task('serve-test', ['build', 'watch', 'jshint-test', 'karma-serve']); gulp.task('default', ['test']);