gulpfile.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. var gulp = require('gulp');
  2. var less = require('gulp-less');
  3. var minifyCSS = require('gulp-minify-css');
  4. var csscomb = require('gulp-csscomb');
  5. var ngAnnotate = require('gulp-ng-annotate');
  6. var uglify = require('gulp-uglify');
  7. var jshint = require('gulp-jshint');
  8. var rename = require('gulp-rename');
  9. var header = require('gulp-header');
  10. var templateCache = require('gulp-angular-templatecache');
  11. var minifyHtml = require("gulp-minify-html");
  12. var concat = require('gulp-concat');
  13. var addsrc = require('gulp-add-src');
  14. var order = require("gulp-order");
  15. var protractor = require("gulp-protractor").protractor;
  16. var pkg = require('./package.json');
  17. var banner = ['/**',
  18. ' * <%= pkg.name %> - <%= pkg.description %>',
  19. ' * @author <%= pkg.author %>',
  20. ' * @version v<%= pkg.version %>',
  21. ' * @link <%= pkg.homepage %>',
  22. ' * @license <%= pkg.license %>',
  23. ' */',
  24. ''].join('\n');
  25. // ==== Styles
  26. gulp.task('styles', function() {
  27. gulp.src('src/angular-ui-notification.less')
  28. .pipe(less({
  29. strictMath: true
  30. }))
  31. .pipe(csscomb())
  32. .pipe(minifyCSS())
  33. .pipe(rename({
  34. suffix: '.min'
  35. }))
  36. .pipe(header(banner, { pkg : pkg }))
  37. .pipe(gulp.dest('dist'))
  38. .pipe(gulp.dest('demo'));
  39. });
  40. // ====== Templates
  41. gulp.task('templates', function() {
  42. gulp.src(['*.html'], {cwd: 'src'})
  43. .pipe(minifyHtml({
  44. empty: true,
  45. spare: true,
  46. quotes: true
  47. }))
  48. .pipe(templateCache({
  49. module: 'ui-notification',
  50. }))
  51. .pipe(rename('angular-ui-notification.templates.js'))
  52. .pipe(gulp.dest("build"));
  53. });
  54. gulp.task('service', function() {
  55. gulp.src(['src/*.js'])
  56. .pipe(jshint())
  57. .pipe(jshint.reporter('default'))
  58. .pipe(jshint.reporter('fail'))
  59. .pipe(ngAnnotate())
  60. .pipe(addsrc('build/*.js'))
  61. .pipe(order([
  62. 'src/*.js',
  63. 'build/angular-ui-notification.templates.js'
  64. ]))
  65. .pipe(concat('angular-ui-notification.js'))
  66. .pipe(uglify())
  67. .pipe(rename({
  68. suffix: '.min'
  69. }))
  70. .pipe(header(banner, { pkg : pkg }))
  71. .pipe(gulp.dest('dist'))
  72. .pipe(gulp.dest('demo'));
  73. });
  74. // ======
  75. gulp.task('e2eTest', function() {
  76. gulp.src(['./test/**/*_spec.js'])
  77. .pipe(protractor({
  78. configFile: "protractor_conf.js",
  79. }))
  80. .on('error', function(e) {throw e});
  81. });
  82. gulp.task('tests', ['e2eTest']);
  83. gulp.task('build', ['templates', 'service', 'styles']);
  84. gulp.task('deploy', ['build', 'tests']);
  85. gulp.task('default', ['deploy'], function() {});