aboutsummaryrefslogtreecommitdiffstats
path: root/Gruntfile.js
diff options
context:
space:
mode:
Diffstat (limited to 'Gruntfile.js')
-rw-r--r--Gruntfile.js329
1 files changed, 329 insertions, 0 deletions
diff --git a/Gruntfile.js b/Gruntfile.js
new file mode 100644
index 000000000..5f9b271ee
--- /dev/null
+++ b/Gruntfile.js
@@ -0,0 +1,329 @@
+// Generated on 2015-07-31 using generator-chrome-extension 0.3.1
+'use strict';
+
+// # Globbing
+// for performance reasons we're only matching one level down:
+// 'test/spec/{,*/}*.js'
+// use this if you want to recursively match all subfolders:
+// 'test/spec/**/*.js'
+
+module.exports = function (grunt) {
+
+ // Load grunt tasks automatically
+ require('load-grunt-tasks')(grunt);
+
+ // Time how long tasks take. Can help when optimizing build times
+ require('time-grunt')(grunt);
+
+ // Configurable paths
+ var config = {
+ app: 'app',
+ dist: 'dist'
+ };
+
+ grunt.initConfig({
+
+ // Project settings
+ config: config,
+
+ // Watches files for changes and runs tasks based on the changed files
+ watch: {
+ bower: {
+ files: ['bower.json'],
+ tasks: ['bowerInstall']
+ },
+ js: {
+ files: ['<%= config.app %>/scripts/{,*/}*.js'],
+ options: {
+ livereload: '<%= connect.options.livereload %>'
+ }
+ },
+ gruntfile: {
+ files: ['Gruntfile.js']
+ },
+ styles: {
+ files: ['<%= config.app %>/styles/{,*/}*.css'],
+ tasks: [],
+ options: {
+ livereload: '<%= connect.options.livereload %>'
+ }
+ },
+ livereload: {
+ options: {
+ livereload: '<%= connect.options.livereload %>'
+ },
+ files: [
+ '<%= config.app %>/*.html',
+ '<%= config.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
+ '<%= config.app %>/manifest.json',
+ '<%= config.app %>/_locales/{,*/}*.json'
+ ]
+ }
+ },
+
+ // Grunt server and debug server setting
+ connect: {
+ options: {
+ port: 9000,
+ livereload: 35729,
+ // change this to '0.0.0.0' to access the server from outside
+ hostname: 'localhost'
+ },
+ chrome: {
+ options: {
+ open: false,
+ base: [
+ '<%= config.app %>'
+ ]
+ }
+ },
+ test: {
+ options: {
+ open: false,
+ base: [
+ 'test',
+ '<%= config.app %>'
+ ]
+ }
+ }
+ },
+
+ // Empties folders to start fresh
+ clean: {
+ chrome: {
+ },
+ dist: {
+ files: [{
+ dot: true,
+ src: [
+ '<%= config.dist %>/*',
+ '!<%= config.dist %>/.git*'
+ ]
+ }]
+ }
+ },
+
+ // Make sure code styles are up to par and there are no obvious mistakes
+ jshint: {
+ options: {
+ jshintrc: '.jshintrc',
+ reporter: require('jshint-stylish')
+ },
+ all: [
+ 'Gruntfile.js',
+ '<%= config.app %>/scripts/{,*/}*.js',
+ '!<%= config.app %>/scripts/vendor/*',
+ 'test/spec/{,*/}*.js'
+ ]
+ },
+ mocha: {
+ all: {
+ options: {
+ run: true,
+ urls: ['http://localhost:<%= connect.options.port %>/index.html']
+ }
+ }
+ },
+
+ // Automatically inject Bower components into the HTML file
+ bowerInstall: {
+ app: {
+ src: [
+ '<%= config.app %>/*.html'
+ ]
+ }
+ },
+
+ // Reads HTML for usemin blocks to enable smart builds that automatically
+ // concat, minify and revision files. Creates configurations in memory so
+ // additional tasks can operate on them
+ useminPrepare: {
+ options: {
+ dest: '<%= config.dist %>'
+ },
+ html: [
+ '<%= config.app %>/popup.html',
+ '<%= config.app %>/options.html'
+ ]
+ },
+
+ // Performs rewrites based on rev and the useminPrepare configuration
+ usemin: {
+ options: {
+ assetsDirs: ['<%= config.dist %>', '<%= config.dist %>/images']
+ },
+ html: ['<%= config.dist %>/{,*/}*.html'],
+ css: ['<%= config.dist %>/styles/{,*/}*.css']
+ },
+
+ // The following *-min tasks produce minifies files in the dist folder
+ imagemin: {
+ dist: {
+ files: [{
+ expand: true,
+ cwd: '<%= config.app %>/images',
+ src: '{,*/}*.{gif,jpeg,jpg,png}',
+ dest: '<%= config.dist %>/images'
+ }]
+ }
+ },
+
+ svgmin: {
+ dist: {
+ files: [{
+ expand: true,
+ cwd: '<%= config.app %>/images',
+ src: '{,*/}*.svg',
+ dest: '<%= config.dist %>/images'
+ }]
+ }
+ },
+
+ htmlmin: {
+ dist: {
+ options: {
+ // removeCommentsFromCDATA: true,
+ // collapseWhitespace: true,
+ // collapseBooleanAttributes: true,
+ // removeAttributeQuotes: true,
+ // removeRedundantAttributes: true,
+ // useShortDoctype: true,
+ // removeEmptyAttributes: true,
+ // removeOptionalTags: true
+ },
+ files: [{
+ expand: true,
+ cwd: '<%= config.app %>',
+ src: '*.html',
+ dest: '<%= config.dist %>'
+ }]
+ }
+ },
+
+ // By default, your `index.html`'s <!-- Usemin block --> will take care of
+ // minification. These next options are pre-configured if you do not wish
+ // to use the Usemin blocks.
+ // cssmin: {
+ // dist: {
+ // files: {
+ // '<%= config.dist %>/styles/main.css': [
+ // '<%= config.app %>/styles/{,*/}*.css'
+ // ]
+ // }
+ // }
+ // },
+ // uglify: {
+ // dist: {
+ // files: {
+ // '<%= config.dist %>/scripts/scripts.js': [
+ // '<%= config.dist %>/scripts/scripts.js'
+ // ]
+ // }
+ // }
+ // },
+ // concat: {
+ // dist: {}
+ // },
+
+ // Copies remaining files to places other tasks can use
+ copy: {
+ dist: {
+ files: [{
+ expand: true,
+ dot: true,
+ cwd: '<%= config.app %>',
+ dest: '<%= config.dist %>',
+ src: [
+ '*.{ico,png,txt}',
+ 'images/{,*/}*.{webp,gif}',
+ '{,*/}*.html',
+ 'styles/{,*/}*.css',
+ 'styles/fonts/{,*/}*.*',
+ '_locales/{,*/}*.json',
+ ]
+ }]
+ }
+ },
+
+ // Run some tasks in parallel to speed up build process
+ concurrent: {
+ chrome: [
+ ],
+ dist: [
+ 'imagemin',
+ 'svgmin'
+ ],
+ test: [
+ ]
+ },
+
+ // Auto buildnumber, exclude debug files. smart builds that event pages
+ chromeManifest: {
+ dist: {
+ options: {
+ buildnumber: true,
+ indentSize: 2,
+ background: {
+ target: 'scripts/background.js',
+ exclude: [
+ 'scripts/chromereload.js'
+ ]
+ }
+ },
+ src: '<%= config.app %>',
+ dest: '<%= config.dist %>'
+ }
+ },
+
+ // Compres dist files to package
+ compress: {
+ dist: {
+ options: {
+ archive: function() {
+ var manifest = grunt.file.readJSON('app/manifest.json');
+ return 'package/metamask-' + manifest.version + '.zip';
+ }
+ },
+ files: [{
+ expand: true,
+ cwd: 'dist/',
+ src: ['**'],
+ dest: ''
+ }]
+ }
+ }
+ });
+
+ grunt.registerTask('debug', function () {
+ grunt.task.run([
+ 'concurrent:chrome',
+ 'connect:chrome',
+ 'watch'
+ ]);
+ });
+
+ grunt.registerTask('test', [
+ 'jshint',
+ 'connect:test',
+ 'mocha'
+ ]);
+
+ grunt.registerTask('build', [
+ 'clean:dist',
+ 'chromeManifest:dist',
+ 'useminPrepare',
+ 'concurrent:dist',
+ 'cssmin',
+ 'concat',
+ 'uglify',
+ 'copy',
+ 'usemin',
+ 'compress'
+ ]);
+
+ grunt.registerTask('default', [
+ 'jshint',
+ 'test',
+ 'build'
+ ]);
+};