diff --git a/.gitignore b/.gitignore index ed1339448..1cf673978 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,9 @@ lib/* !lib/socket.io.js js/copayBundle.js +js/copayMain.js +css/copay.min.css +css/vendors.min.css webapp browser-extensions/chrome/copay-chrome-extension diff --git a/Gruntfile.js b/Gruntfile.js index 53942da0b..747f418a7 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -5,28 +5,60 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-mocha-test'); grunt.loadNpmTasks('grunt-markdown'); grunt.loadNpmTasks('grunt-shell'); + grunt.loadNpmTasks('grunt-contrib-cssmin'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-uglify'); // Project Configuration grunt.initConfig({ shell: { - browserify: { + prod: { + options: { + stdout: false, + stderr: false + }, + command: 'node ./util/build.js' + }, + dev: { options: { stdout: true, stderr: true }, - command: grunt.option('target') === 'dev' ? - 'node ./util/build.js -d ' : 'node ./util/build.js ' + command: 'node ./util/build.js -d' } }, watch: { + options: { + dateFormat: function(time) { + grunt.log.writeln('The watch finished in ' + time + 'ms at ' + (new Date()).toString()); + grunt.log.writeln('Waiting for more changes...'); + }, + }, readme: { files: ['README.md'], tasks: ['markdown'] }, scripts: { - files: ['*.js', '*/*/*.js', '**/*.js', '*.html', '!**/node_modules/**', '!lib/**js', '!browser/vendor-bundle.js', '!js/copayBundle.js'], - tasks: ['shell'], + files: [ + 'js/models/**/*.js' + ], + tasks: ['shell:dev'] }, + css: { + files: ['css/src/*.css'], + tasks: ['cssmin:copay'] + }, + main: { + files: [ + 'js/app.js', + 'js/directives.js', + 'js/filters.js', + 'js/routes.js', + 'js/services/*.js', + 'js/controllers/*.js' + ], + tasks: ['concat:main'] + } }, mochaTest: { options: { @@ -43,9 +75,74 @@ module.exports = function(grunt) { ext: '.html' }] } + }, + concat: { + vendors: { + src: [ + 'lib/moment/min/moment.min.js', + 'lib/qrcode-generator/js/qrcode.js', + 'lib/peer.js', + 'lib/bitcore.js', + 'lib/crypto-js/rollups/sha256.js', + 'lib/crypto-js/rollups/pbkdf2.js', + 'lib/crypto-js/rollups/aes.js', + 'lib/file-saver/FileSaver.js', + 'lib/socket.io-client/socket.io.js', + 'lib/sjcl.js', + 'lib/ios-imagefile-megapixel/megapix-image.js', + 'lib/qrcode-decoder-js/lib/qrcode-decoder.min.js' + ], + dest: 'lib/vendors.js' + }, + angular: { + src: [ + 'lib/angular/angular.min.js', + 'lib/angular-route/angular-route.min.js', + 'lib/angular-moment/angular-moment.js', + 'lib/angular-qrcode/qrcode.js', + 'lib/ng-idle/angular-idle.min.js', + 'lib/angular-foundation/mm-foundation.min.js', + 'lib/angular-foundation/mm-foundation-tpls.min.js' + ], + dest: 'lib/angularjs-all.js' + }, + main: { + src: [ + 'js/app.js', + 'js/directives.js', + 'js/filters.js', + 'js/routes.js', + 'js/services/*.js', + 'js/controllers/*.js' + ], + dest: 'js/copayMain.js' + } + }, + cssmin: { + copay: { + files: { + 'css/copay.min.css': ['css/src/*.css'], + } + }, + vendors: { + files: { + 'css/vendors.min.css': ['css/foundation.min.css', 'css/foundation-icons.css', 'lib/angular/angular-csp.css'] + } + } + }, + uglify: { + options: { + mangle: false + }, + prod: { + files: { + 'js/copayMain.js': ['js/copayMain.js'] + } + } } }); - grunt.registerTask('default', ['shell', 'watch']); + grunt.registerTask('default', ['shell:dev', 'concat', 'cssmin']); + grunt.registerTask('prod', ['shell:prod', 'concat', 'cssmin', 'uglify']); }; diff --git a/README.md b/README.md index e95cad119..b3015af0a 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,11 @@ Build Copay: ``` npm install bower install -grunt shell --target=dev +grunt +``` +For production environments: +``` +grunt prod ``` Open Copay: diff --git a/css/main.css b/css/src/main.css similarity index 99% rename from css/main.css rename to css/src/main.css index 4b98dc87b..f7e34e300 100644 --- a/css/main.css +++ b/css/src/main.css @@ -1194,4 +1194,5 @@ a.text-warning:hover {color: #FD7262;} padding: 50px; } + /*-----------------------------------------------------------------*/ diff --git a/css/mobile.css b/css/src/mobile.css similarity index 100% rename from css/mobile.css rename to css/src/mobile.css diff --git a/index.html b/index.html index 848b2d4b0..f3a30b346 100644 --- a/index.html +++ b/index.html @@ -5,11 +5,8 @@ Copay - Multisignature Wallet - - - - - + + @@ -60,59 +57,13 @@ - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/package.json b/package.json index 449f59d17..9b8629262 100644 --- a/package.json +++ b/package.json @@ -48,13 +48,15 @@ "express": "4.0.0", "github-releases": "0.2.0", "grunt-browserify": "2.0.8", + "grunt-contrib-concat": "0.5.0", + "grunt-contrib-cssmin": "0.10.0", + "grunt-contrib-uglify": "^0.5.1", "grunt-contrib-watch": "0.5.3", "grunt-markdown": "0.5.0", "browser-pack": "2.0.1", "bitcore": "0.1.35", "node-cryptojs-aes": "0.4.0", "blanket": "1.1.6", - "express": "4.0.0", "grunt-mocha-test": "0.8.2", "grunt-shell": "0.6.4", "istanbul": "0.2.10", diff --git a/views/copayers.html b/views/copayers.html index ed1d5128d..47851a4be 100644 --- a/views/copayers.html +++ b/views/copayers.html @@ -2,7 +2,7 @@
- Copay + Copay
diff --git a/views/home.html b/views/home.html index 463f5ebbf..9d3d48aa1 100644 --- a/views/home.html +++ b/views/home.html @@ -1,7 +1,7 @@
- Copay + Copay
diff --git a/views/import.html b/views/import.html index 101b5aa04..627e1b92c 100644 --- a/views/import.html +++ b/views/import.html @@ -5,7 +5,7 @@
- Copay + Copay
diff --git a/views/includes/peer-list.html b/views/includes/peer-list.html index c46f04dab..5316c6ae5 100644 --- a/views/includes/peer-list.html +++ b/views/includes/peer-list.html @@ -23,7 +23,8 @@ ng-if="!hasVideo(copayer)" ng-class="isConnected(copayer) ? 'online' : 'offline'" src="./img/satoshi.gif" - alt="{{copayer}}"> + alt="{{copayer}}" + width="70"> Me {{copayer.nick}} @@ -43,7 +44,8 @@ ng-if="!hasVideo(copayer)" ng-class="isConnected(copayer) ? 'online' : 'offline'" src="./img/satoshi.gif" - alt="{{copayer}}"> + alt="{{copayer}}" + width="70">