105 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
#!/usr/bin/env node
 | 
						|
 | 
						|
'use strict';
 | 
						|
 | 
						|
var path = require('path');
 | 
						|
 | 
						|
var del = require('del');
 | 
						|
var gulp = require('gulp');
 | 
						|
var browserify = require('browserify');
 | 
						|
var jshint = require('gulp-jshint');
 | 
						|
var uglify = require('gulp-uglify');
 | 
						|
var rename = require('gulp-rename');
 | 
						|
var envify = require('envify/custom');
 | 
						|
var unreach = require('unreachable-branch-transform');
 | 
						|
var source = require('vinyl-source-stream');
 | 
						|
var exorcist = require('exorcist');
 | 
						|
var bower = require('bower');
 | 
						|
 | 
						|
var DEST = './dist/';
 | 
						|
 | 
						|
var build = function(src, dst, ugly) {
 | 
						|
  var result = browserify({
 | 
						|
      debug: true,
 | 
						|
      insert_global_vars: false,
 | 
						|
      detectGlobals: false,
 | 
						|
      bundleExternal: false
 | 
						|
    })
 | 
						|
    .require('./' + src + '.js', {expose: 'web3'})
 | 
						|
    .add('./' + src + '.js')
 | 
						|
    .transform('envify', {
 | 
						|
      NODE_ENV: 'build'
 | 
						|
    })
 | 
						|
    .transform('unreachable-branch-transform');
 | 
						|
 | 
						|
    if (ugly) {
 | 
						|
      result = result.transform('uglifyify', {
 | 
						|
        mangle: false,
 | 
						|
        compress: {
 | 
						|
          dead_code: false,
 | 
						|
          conditionals: true,
 | 
						|
          unused: false,
 | 
						|
          hoist_funs: true,
 | 
						|
          hoist_vars: true,
 | 
						|
          negate_iife: false
 | 
						|
        },
 | 
						|
        beautify: true,
 | 
						|
        warnings: true
 | 
						|
      });
 | 
						|
    }
 | 
						|
 | 
						|
    return result.bundle()
 | 
						|
    .pipe(exorcist(path.join( DEST, dst + '.js.map')))
 | 
						|
    .pipe(source(dst + '.js'))
 | 
						|
    .pipe(gulp.dest( DEST ));
 | 
						|
};
 | 
						|
 | 
						|
var uglifyFile = function(file) {
 | 
						|
  return gulp.src( DEST + file + '.js')
 | 
						|
    .pipe(uglify())
 | 
						|
    .pipe(rename(file + '.min.js'))
 | 
						|
    .pipe(gulp.dest( DEST ));
 | 
						|
};
 | 
						|
 | 
						|
gulp.task('bower', function(cb){
 | 
						|
  bower.commands.install().on('end', function (installed){
 | 
						|
    console.log(installed);
 | 
						|
    cb();
 | 
						|
  });
 | 
						|
});
 | 
						|
 | 
						|
gulp.task('clean', ['lint'], function(cb) {
 | 
						|
  del([ DEST ], cb);
 | 
						|
});
 | 
						|
 | 
						|
gulp.task('lint', function(){
 | 
						|
  return gulp.src(['./*.js', './lib/*.js'])
 | 
						|
    .pipe(jshint())
 | 
						|
    .pipe(jshint.reporter('default'));
 | 
						|
});
 | 
						|
 | 
						|
gulp.task('build', ['clean'], function () {
 | 
						|
    return build('index', 'ethereum', true);
 | 
						|
});
 | 
						|
 | 
						|
gulp.task('buildDev', ['clean'], function () {
 | 
						|
    return build('index', 'ethereum', false);
 | 
						|
});
 | 
						|
 | 
						|
gulp.task('uglify', ['build'], function(){
 | 
						|
    return uglifyFile('ethereum');
 | 
						|
});
 | 
						|
 | 
						|
gulp.task('uglify', ['buildDev'], function(){
 | 
						|
    return uglifyFile('ethereum');
 | 
						|
});
 | 
						|
 | 
						|
gulp.task('watch', function() {
 | 
						|
  gulp.watch(['./lib/*.js'], ['lint', 'prepare', 'build']);
 | 
						|
});
 | 
						|
 | 
						|
gulp.task('release', ['bower', 'lint', 'build', 'uglify']);
 | 
						|
gulp.task('dev', ['bower', 'lint', 'buildDev', 'uglify']);
 | 
						|
gulp.task('default', ['dev']);
 | 
						|
 |