diff --git a/.gitignore b/.gitignore
index 375322f..9cf6a6a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,4 +14,8 @@ apiref
bower_components
report
.DS_Store
-browser
+
+
+bitcore.js
+bitcore.min.js
+tests.js
diff --git a/bower.json b/bower.json
index ac4c444..8ec416b 100644
--- a/bower.json
+++ b/bower.json
@@ -1,6 +1,6 @@
{
"name": "bitcore",
- "main": "browser/bitcore.min.js",
+ "main": "./bitcore.min.js",
"version": "0.8.6",
"homepage": "http://bitcore.io",
"authors": [
diff --git a/gulpfile.js b/gulpfile.js
index 012a2b8..53191d2 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,330 +1,5 @@
-/**
- * @file gulpfile.js
- *
- * Defines tasks that can be run on gulp.
- *
- * Summary:
- * - `test` - runs all the tests on node and the browser (mocha and karma)
- *
- * - `test:node`
- *
- `test:node:nofail` - internally used for watching (due to bug on gulp-mocha)
- *
- `test:browser`
- *
`
- * - `watch:test` - watch for file changes and run tests
- *
- * - `watch:test:node`
- *
- `watch:test:browser`
- *
`
- * - `browser` - generate files needed for browser (browserify)
- *
- * - `browser:uncompressed` - build `browser/bitcore.js`
- *
- `browser:compressed` - build `browser/bitcore.min.js`
- *
- `browser:maketests` - build `browser/tests.js`, needed for testing without karma
- *
`
- * - `lint` - run `jshint`
- *
- `coverage` - run `istanbul` with mocha to generate a report of test coverage
- *
- `jsdoc` - run `jsdoc` to generate the API reference
- *
- `coveralls` - updates coveralls info
- *
- `release` - automates release process (only for bitcore maintainers)
- *
- */
-'use strict';
-var gulp = require('gulp');
-var bump = require('gulp-bump');
-var coveralls = require('gulp-coveralls');
-var git = require('gulp-git');
-var gutil = require('gulp-util');
-var jsdoc2md = require('jsdoc-to-markdown');
-var jshint = require('gulp-jshint');
-var mfs = require('more-fs');
-var mocha = require('gulp-mocha');
-var rename = require('gulp-rename');
-var runSequence = require('run-sequence');
-var shell = require('gulp-shell');
-var through = require('through2');
-var uglify = require('gulp-uglify');
+var gulp_bitcore = require('gulp-bitcore');
-
-var files = ['lib/**/*.js'];
-var tests = ['test/**/*.js'];
-var alljs = files.concat(tests);
-
-
-function ignoreError() {
- /* jshint ignore:start */ // using `this` in this context is weird
- this.emit('end');
- /* jshint ignore:end */
-}
-
-var testMocha = function() {
- return gulp.src(tests).pipe(new mocha({
- reporter: 'spec'
- }));
-};
-
-var testKarma = shell.task([
- './node_modules/karma/bin/karma start'
-]);
-
-/**
- * Testing
- */
-
-gulp.task('test:node', testMocha);
-
-gulp.task('test:node:nofail', function() {
- return testMocha().on('error', ignoreError);
-});
-
-gulp.task('test:browser', ['browser:uncompressed', 'browser:maketests'], testKarma);
-
-gulp.task('test', function(callback) {
- runSequence(['test:node'], ['test:browser'], callback);
-});
-
-/**
- * File generation
- */
-
-gulp.task('browser:makefolder', shell.task([
- 'if [ ! -d "browser" ]; then mkdir browser; fi'
-]));
-
-gulp.task('browser:uncompressed', ['browser:makefolder'], shell.task([
- './node_modules/.bin/browserify index.js --insert-global-vars=true --standalone=bitcore -o browser/bitcore.js'
-]));
-
-gulp.task('browser:compressed', ['browser:uncompressed'], function() {
- return gulp.src('browser/bitcore.js')
- .pipe(uglify({
- mangle: true,
- compress: true
- }))
- .pipe(rename('bitcore.min.js'))
- .pipe(gulp.dest('browser'))
- .on('error', gutil.log);
-});
-
-gulp.task('browser:maketests', ['browser:makefolder'], shell.task([
- 'find test/ -type f -name "*.js" | xargs ./node_modules/.bin/browserify -t brfs -o browser/tests.js'
-]));
-
-gulp.task('browser', function(callback) {
- runSequence(['browser:compressed'], ['browser:maketests'], callback);
-});
-
-/**
- * Code quality and documentation
- */
-
-gulp.task('lint', function() {
- return gulp.src(alljs)
- .pipe(jshint())
- .pipe(jshint.reporter('default'));
-});
-
-gulp.task('plato', shell.task(['plato -d report -r -l .jshintrc -t bitcore lib']));
-
-gulp.task('jsdoc', function() {
-
- function jsdoc() {
- return through.obj(function(file, enc, cb) {
-
- if (file.isNull()) {
- cb(null, file);
- return;
- }
- if (file.isStream()) {
- cb(new gutil.PluginError('gulp-jsdoc2md', 'Streaming not supported'));
- return;
- }
- var destination = 'docs/api/' + file.path.replace(file.base, '').replace(/\.js$/, '.md');
- jsdoc2md.render(file.path, {})
- .on('error', function(err) {
- gutil.log(gutil.colors.red('jsdoc2md failed', err.message));
- })
- .pipe(mfs.writeStream(destination));
- cb(null, file);
- });
- }
-
- return gulp.src(files).pipe(jsdoc());
-
-});
-
-gulp.task('coverage', shell.task(['node_modules/.bin/./istanbul cover node_modules/.bin/_mocha -- --recursive']));
-
-gulp.task('coveralls', ['coverage'], function() {
- gulp.src('coverage/lcov.info').pipe(coveralls());
-});
-
-/**
- * Watch tasks
- */
-
-gulp.task('watch:test', function() {
- // TODO: Only run tests that are linked to file changes by doing
- // something smart like reading through the require statements
- return gulp.watch(alljs, ['test']);
-});
-
-gulp.task('watch:test:node', function() {
- // TODO: Only run tests that are linked to file changes by doing
- // something smart like reading through the require statements
- return gulp.watch(alljs, ['test:node']);
-});
-
-gulp.task('watch:test:browser', function() {
- // TODO: Only run tests that are linked to file changes by doing
- // something smart like reading through the require statements
- return gulp.watch(alljs, ['test:browser']);
-});
-
-gulp.task('watch:jsdoc', function() {
- // TODO: Only run tests that are linked to file changes by doing
- // something smart like reading through the require statements
- return gulp.watch(alljs, ['jsdoc']);
-});
-
-gulp.task('watch:coverage', function() {
- // TODO: Only run tests that are linked to file changes by doing
- // something smart like reading through the require statements
- return gulp.watch(alljs, ['coverage']);
-});
-
-gulp.task('watch:lint', function() {
- // TODO: Only lint files that are linked to file changes by doing
- // something smart like reading through the require statements
- return gulp.watch(alljs, ['lint']);
-});
-
-gulp.task('watch:browser', function() {
- return gulp.watch(alljs, ['browser']);
-});
-
-/**
- * Release automation
- */
-
-gulp.task('release:install', function() {
- return shell.task([
- 'npm install',
- ]);
-});
-
-gulp.task('release:bump', function() {
- return gulp.src(['./bower.json', './package.json'])
- .pipe(bump({
- type: 'patch'
- }))
- .pipe(gulp.dest('./'));
-});
-
-gulp.task('release:checkout-releases', function(cb) {
- git.checkout('releases', {
- args: ''
- }, cb);
-});
-
-gulp.task('release:merge-master', function(cb) {
- git.merge('master', {
- args: ''
- }, cb);
-});
-
-gulp.task('release:checkout-master', function(cb) {
- git.checkout('master', {
- args: ''
- }, cb);
-});
-
-gulp.task('release:add-built-files', function() {
- return gulp.src(['./browser/bitcore.js', './browser/bitcore.min.js', './package.json', './bower.json'])
- .pipe(git.add({
- args: '-f'
- }));
-});
-
-gulp.task('release:build-commit', ['release:add-built-files'], function() {
- var pjson = require('./package.json');
- return gulp.src(['./browser/bitcore.js', './browser/bitcore.min.js', './package.json', './bower.json'])
- .pipe(git.commit('Build: ' + pjson.version, {
- args: ''
- }));
-});
-
-gulp.task('release:version-commit', function() {
- var pjson = require('./package.json');
- var files = ['./package.json', './bower.json'];
- return gulp.src(files)
- .pipe(git.commit('Bump package version to ' + pjson.version, {
- args: ''
- }));
-});
-
-gulp.task('release:push-releases', function(cb) {
- git.push('bitpay', 'releases', {
- args: ''
- }, cb);
-});
-
-gulp.task('release:push', function(cb) {
- git.push('bitpay', 'master', {
- args: ''
- }, cb);
-});
-
-gulp.task('release:push-tag', function(cb) {
- var pjson = require('./package.json');
- var name = 'v' + pjson.version;
- git.tag(name, 'Release ' + name, function() {
- git.push('bitpay', name, cb);
- });
-});
-
-gulp.task('release:publish', shell.task([
- 'npm publish'
-]));
-
-// requires https://hub.github.com/
-gulp.task('release', function(cb) {
- runSequence(
- // Checkout the `releases` branch
- ['release:checkout-releases'],
- // Merge the master branch
- ['release:merge-master'],
- // Run npm install
- ['release:install'],
- // Build browser bundle
- ['browser:compressed'],
- // Run tests with gulp test
- ['test'],
- // Update package.json and bower.json
- ['release:bump'],
- // Commit
- ['release:build-commit'],
- // Run git push bitpay $VERSION
- ['release:push-tag'],
- // Push to releases branch
- ['release:push-releases'],
- // Run npm publish
- ['release:publish'],
- // Checkout the `master` branch
- ['release:checkout-master'],
- // Bump package.json and bower.json, again
- ['release:bump'],
- // Version commit with no binary files to master
- ['release:version-commit'],
- // Push to master
- ['release:push'],
- cb);
-});
-
-
-/* Default task */
-gulp.task('default', function(callback) {
- return runSequence(['lint', 'jsdoc'], ['browser:uncompressed', 'test'], ['coverage', 'browser:compressed'],
- callback);
-});
+gulp_bitcore();
diff --git a/karma.conf.js b/karma.conf.js
index acc9eac..dc5d597 100644
--- a/karma.conf.js
+++ b/karma.conf.js
@@ -23,7 +23,7 @@ module.exports = function(config) {
},
singleRun: true,
files: [
- 'browser/tests.js'
+ 'tests.js'
],
plugins: [
'karma-mocha',
diff --git a/package.json b/package.json
index 60baac5..7a451cc 100644
--- a/package.json
+++ b/package.json
@@ -8,8 +8,7 @@
"lint": "gulp lint",
"test": "gulp test",
"coverage": "gulp coverage",
- "build": "gulp",
- "postinstall": "node ./lib/errors/build.js"
+ "build": "gulp"
},
"contributors": [
{
@@ -92,6 +91,7 @@
"chai": "~1.10.0",
"closure-compiler-jar": "git://github.com/eordano/closure-compiler-jar.git",
"gulp": "^3.8.10",
+ "gulp-bitcore": "git://github.com/maraoz/gulp-bitcore.git",
"gulp-bump": "^0.1.11",
"gulp-closure-compiler": "^0.2.9",
"gulp-coveralls": "^0.1.3",