You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							98 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							98 lines
						
					
					
						
							2.0 KiB
						
					
					
				| 'use strict';
 | |
| 
 | |
| var gulp = require('gulp');
 | |
| var jshint = require('gulp-jshint');
 | |
| var exec = require('gulp-exec');
 | |
| var stylish = require('jshint-stylish');
 | |
| var browserify = require('gulp-browserify');
 | |
| var uglify = require('gulp-uglify');
 | |
| var rename = require('gulp-rename');
 | |
| var karma = require('karma');
 | |
| var coveralls = require('gulp-coveralls');
 | |
| var istanbul = require('gulp-istanbul');
 | |
| var mocha = require('gulp-mocha');
 | |
| 
 | |
| var paths = {
 | |
|   index: './index.js',
 | |
|   tests: './test/**/*.js'
 | |
| };
 | |
| 
 | |
| function preTest(src) {
 | |
|   return gulp.src(src)
 | |
|     .pipe(istanbul())
 | |
|     .pipe(istanbul.hookRequire());
 | |
| }
 | |
| 
 | |
| function test(src){
 | |
|   return gulp.src(src)
 | |
|     .pipe(mocha())
 | |
|     .pipe(istanbul.writeReports());
 | |
| }
 | |
| 
 | |
| function testKarma(done){
 | |
|   new karma.Server({
 | |
|     configFile: __dirname + '/karma.conf.js',
 | |
|     singleRun: true
 | |
|   }, done).start();
 | |
| }
 | |
| 
 | |
| function lint(src){
 | |
|   return gulp.src(src)
 | |
|     .pipe(jshint('.jshintrc'))
 | |
|     .pipe(jshint.reporter(stylish));
 | |
| }
 | |
| 
 | |
| gulp.task('dist', function(){
 | |
|   gulp.src([paths.index])
 | |
|     .pipe(browserify({
 | |
|       insertGlobals : true,
 | |
|       debug: true,
 | |
|       standalone: 'objectHash'
 | |
|     }))
 | |
|     .pipe(rename('object_hash.js'))
 | |
|     .pipe(uglify({outSourceMap: true}))
 | |
|     .pipe(gulp.dest('./dist'));
 | |
|     // tests
 | |
|   gulp.src([paths.tests])
 | |
|     .pipe(browserify())
 | |
|     .pipe(rename('object_hash_test.js'))
 | |
|     .pipe(gulp.dest('./dist'));
 | |
| });
 | |
| 
 | |
| gulp.task('pre-test', function() {
 | |
|   preTest([paths.index]);
 | |
| });
 | |
| 
 | |
| gulp.task('test', ['pre-test'], function() {
 | |
|   test([paths.tests]);
 | |
| });
 | |
| 
 | |
| gulp.task('karma', function() {
 | |
|   testKarma();
 | |
| });
 | |
| 
 | |
| gulp.task('coveralls', function() {
 | |
|   gulp.src('coverage/**/lcov.info')
 | |
|     .pipe(coveralls());
 | |
| });
 | |
| 
 | |
| gulp.task('lint', function () {
 | |
|   return lint([paths.index]);
 | |
| });
 | |
| 
 | |
| gulp.task('watch', function () {
 | |
| 
 | |
|   // watch and lint any files that are added or changed
 | |
|   gulp.watch([paths.index, paths.tests], function(event){
 | |
|     if(event.type !== 'deleted') {
 | |
|       lint([event.path]);
 | |
|     }
 | |
|   });
 | |
| 
 | |
|   // run the tests when something changes
 | |
|   gulp.watch([paths.index, paths.tests], ['test', 'karma']);
 | |
| 
 | |
| });
 | |
| 
 | |
| gulp.task('default', ['watch']);
 |