2013-05-21 09:38:18 -04:00
|
|
|
module.exports = function(grunt) {
|
2013-08-09 11:23:38 -04:00
|
|
|
'use strict';
|
2013-05-21 09:38:18 -04:00
|
|
|
|
2013-08-09 11:23:38 -04:00
|
|
|
// Project configuration.
|
|
|
|
grunt.initConfig({
|
|
|
|
connect: {
|
|
|
|
dev: {
|
|
|
|
options: {
|
|
|
|
port: 8580,
|
|
|
|
base: '.',
|
|
|
|
keepalive: true
|
|
|
|
}
|
|
|
|
},
|
|
|
|
test: {
|
|
|
|
options: {
|
|
|
|
port: 8581,
|
|
|
|
base: '.'
|
|
|
|
}
|
|
|
|
},
|
|
|
|
prod: {
|
|
|
|
options: {
|
|
|
|
port: process.env.PORT || 8585,
|
|
|
|
base: './src/',
|
|
|
|
keepalive: true,
|
|
|
|
middleware: function(connect, options) {
|
|
|
|
// Return array of whatever middlewares you want
|
|
|
|
return [function(req, res, next) {
|
|
|
|
res.setHeader('Content-Security-Policy', "default-src 'self'; script-src 'self' 'unsafe-eval'; connect-src *; object-src 'none'; style-src 'self' 'unsafe-inline'");
|
|
|
|
res.setHeader('X-Content-Security-Policy', "default-src *; script-src 'self' 'unsafe-eval'; options eval-script; object-src 'none'; style-src 'self' 'unsafe-inline'");
|
|
|
|
res.setHeader('X-WebKit-CSP', "default-src 'self'; script-src 'self' 'unsafe-eval'; connect-src *; object-src 'none'; style-src 'self' 'unsafe-inline'");
|
2013-05-22 04:16:26 -04:00
|
|
|
|
2013-08-09 11:23:38 -04:00
|
|
|
return next();
|
|
|
|
},
|
2013-05-22 04:16:26 -04:00
|
|
|
|
2013-08-09 11:23:38 -04:00
|
|
|
// Serve static files.
|
|
|
|
connect.static(options.base)];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2013-05-22 04:16:26 -04:00
|
|
|
|
2013-08-09 11:23:38 -04:00
|
|
|
jshint: {
|
2013-08-19 15:13:32 -04:00
|
|
|
all: ['Gruntfile.js', 'src/*.js', 'src/js/**/*.js', 'test/new-unit/*.js', 'test/unit/*.js', 'test/integration/*.js'],
|
2013-08-09 11:23:38 -04:00
|
|
|
options: {
|
|
|
|
jshintrc: '.jshintrc'
|
|
|
|
}
|
|
|
|
},
|
2013-05-22 04:16:26 -04:00
|
|
|
|
2013-08-09 11:23:38 -04:00
|
|
|
qunit: {
|
|
|
|
all: {
|
|
|
|
options: {
|
|
|
|
timeout: 20000,
|
|
|
|
urls: ['http://localhost:<%= connect.test.options.port %>/test/unit/index.html'
|
|
|
|
/*,
|
|
|
|
'http://localhost:<%= connect.test.options.port %>/test/integration/index.html'*/
|
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
2013-08-19 15:13:32 -04:00
|
|
|
},
|
|
|
|
|
|
|
|
mocha: {
|
|
|
|
all: {
|
|
|
|
options: {
|
|
|
|
urls: ['http://localhost:<%= connect.test.options.port %>/test/new-unit/index.html'],
|
2013-09-11 18:11:44 -04:00
|
|
|
run: false
|
2013-08-19 15:13:32 -04:00
|
|
|
}
|
|
|
|
}
|
2013-09-16 13:46:04 -04:00
|
|
|
},
|
|
|
|
|
|
|
|
clean: {
|
|
|
|
dist: ['dist']
|
|
|
|
},
|
|
|
|
sass: {
|
|
|
|
dist: {
|
|
|
|
files: {
|
|
|
|
'dist/css/all.css': 'src/sass/all.scss'
|
|
|
|
}
|
2013-09-17 11:48:56 -04:00
|
|
|
},
|
|
|
|
oldSass: {
|
|
|
|
files: {
|
|
|
|
'dist/css/style.css': 'src/css/style.scss'
|
|
|
|
}
|
2013-09-16 13:46:04 -04:00
|
|
|
}
|
|
|
|
},
|
|
|
|
autoprefixer: {
|
|
|
|
options: {
|
|
|
|
browsers: ['last 2 versions']
|
|
|
|
},
|
|
|
|
dist: {
|
|
|
|
files: {
|
|
|
|
'dist/css/all.css': 'dist/css/all.css'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
csso: {
|
|
|
|
options: {
|
|
|
|
banner: '<%= banner %>'
|
|
|
|
},
|
|
|
|
dist: {
|
|
|
|
files: {
|
|
|
|
'dist/css/all.min.css': 'dist/css/all.css'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
css: {
|
|
|
|
files: ['src/sass/**/*.scss'],
|
|
|
|
tasks: ['dist-css']
|
2013-09-17 07:04:41 -04:00
|
|
|
},
|
2013-09-17 11:48:56 -04:00
|
|
|
oldSass: {
|
|
|
|
files: ['src/css/**/*.scss'],
|
|
|
|
tasks: ['sass:oldSass']
|
|
|
|
},
|
2013-09-17 08:40:35 -04:00
|
|
|
js: {
|
|
|
|
files: ['src/js/**/*.js'],
|
|
|
|
tasks: ['copy:js']
|
|
|
|
},
|
|
|
|
lib: {
|
|
|
|
files: ['src/lib/**/*.js'],
|
|
|
|
tasks: ['copy:lib']
|
|
|
|
},
|
|
|
|
app: {
|
|
|
|
files: ['src/*.js', 'src/**/*.html', 'src/**/*.json', 'src/img/**/*', 'src/font/**/*'],
|
|
|
|
tasks: ['copy:app', 'copy:tpl', 'copy:img', 'copy:font']
|
2013-09-16 13:46:04 -04:00
|
|
|
}
|
|
|
|
},
|
|
|
|
copy: {
|
2013-09-17 11:48:56 -04:00
|
|
|
oldSass: {
|
|
|
|
expand: true,
|
|
|
|
cwd: 'src/css/',
|
|
|
|
src: ['reset.css', 'icons.ttf'],
|
|
|
|
dest: 'dist/css/'
|
|
|
|
},
|
2013-09-17 08:40:35 -04:00
|
|
|
npm: {
|
2013-09-16 13:46:04 -04:00
|
|
|
expand: true,
|
|
|
|
flatten: true,
|
2013-09-17 11:34:40 -04:00
|
|
|
cwd: 'node_modules/',
|
|
|
|
src: ['crypto-lib/node_modules/node-forge/js/*.js'],
|
2013-09-17 08:40:35 -04:00
|
|
|
dest: 'src/lib/'
|
2013-09-16 13:46:04 -04:00
|
|
|
},
|
2013-09-17 08:40:35 -04:00
|
|
|
npmDev: {
|
2013-09-16 13:46:04 -04:00
|
|
|
expand: true,
|
|
|
|
flatten: true,
|
2013-09-17 11:34:40 -04:00
|
|
|
cwd: 'node_modules/',
|
|
|
|
src: ['mocha/mocha.css', 'mocha/mocha.js', 'chai/chai.js', 'sinon/pkg/sinon.js'],
|
2013-09-17 08:40:35 -04:00
|
|
|
dest: 'test/new-unit/lib/'
|
|
|
|
},
|
|
|
|
cryptoLib: {
|
|
|
|
expand: true,
|
2013-09-17 11:34:40 -04:00
|
|
|
cwd: 'node_modules/crypto-lib/src/',
|
|
|
|
src: ['*.js'],
|
2013-09-17 08:40:35 -04:00
|
|
|
dest: 'src/js/crypto/'
|
|
|
|
},
|
|
|
|
lib: {
|
|
|
|
expand: true,
|
2013-09-17 11:34:40 -04:00
|
|
|
cwd: 'src/lib/',
|
|
|
|
src: ['**'],
|
2013-09-17 08:40:35 -04:00
|
|
|
dest: 'dist/lib/'
|
2013-09-16 13:46:04 -04:00
|
|
|
},
|
|
|
|
js: {
|
|
|
|
expand: true,
|
2013-09-17 11:34:40 -04:00
|
|
|
cwd: 'src/js/',
|
|
|
|
src: ['**'],
|
2013-09-16 13:46:04 -04:00
|
|
|
dest: 'dist/js/'
|
|
|
|
},
|
2013-09-17 08:40:35 -04:00
|
|
|
font: {
|
2013-09-16 13:46:04 -04:00
|
|
|
expand: true,
|
2013-09-17 11:34:40 -04:00
|
|
|
cwd: 'src/font/',
|
|
|
|
src: ['*'],
|
2013-09-17 08:40:35 -04:00
|
|
|
dest: 'dist/font/'
|
2013-09-16 13:46:04 -04:00
|
|
|
},
|
2013-09-17 08:40:35 -04:00
|
|
|
img: {
|
2013-09-16 13:46:04 -04:00
|
|
|
expand: true,
|
2013-09-17 11:34:40 -04:00
|
|
|
cwd: 'src/img/',
|
|
|
|
src: ['*'],
|
2013-09-17 08:40:35 -04:00
|
|
|
dest: 'dist/img/'
|
|
|
|
},
|
|
|
|
tpl: {
|
|
|
|
expand: true,
|
2013-09-17 11:34:40 -04:00
|
|
|
cwd: 'src/tpl/',
|
|
|
|
src: ['*'],
|
2013-09-17 08:40:35 -04:00
|
|
|
dest: 'dist/tpl/'
|
2013-09-16 13:46:04 -04:00
|
|
|
},
|
|
|
|
app: {
|
|
|
|
expand: true,
|
2013-09-17 11:34:40 -04:00
|
|
|
cwd: 'src/',
|
|
|
|
src: ['*.html', '*.js', '*.json'],
|
2013-09-16 13:46:04 -04:00
|
|
|
dest: 'dist/'
|
|
|
|
}
|
2013-08-09 11:23:38 -04:00
|
|
|
}
|
|
|
|
});
|
2013-05-21 09:38:18 -04:00
|
|
|
|
2013-08-09 11:23:38 -04:00
|
|
|
// Load the plugin(s)
|
|
|
|
grunt.loadNpmTasks('grunt-contrib-connect');
|
|
|
|
grunt.loadNpmTasks('grunt-contrib-jshint');
|
|
|
|
grunt.loadNpmTasks('grunt-contrib-qunit');
|
2013-08-19 15:13:32 -04:00
|
|
|
grunt.loadNpmTasks('grunt-mocha');
|
2013-09-16 13:46:04 -04:00
|
|
|
grunt.loadNpmTasks('grunt-contrib-clean');
|
|
|
|
grunt.loadNpmTasks('grunt-csso');
|
|
|
|
grunt.loadNpmTasks('grunt-contrib-sass');
|
|
|
|
grunt.loadNpmTasks('grunt-autoprefixer');
|
|
|
|
grunt.loadNpmTasks('grunt-contrib-watch');
|
|
|
|
grunt.loadNpmTasks('grunt-contrib-copy');
|
2013-05-21 09:38:18 -04:00
|
|
|
|
2013-09-17 07:04:41 -04:00
|
|
|
// Build tasks
|
2013-09-17 08:40:35 -04:00
|
|
|
grunt.registerTask('dist-npm', ['copy:npm', 'copy:npmDev', 'copy:cryptoLib']);
|
2013-09-16 13:46:04 -04:00
|
|
|
grunt.registerTask('dist-css', ['sass', 'autoprefixer', 'csso']);
|
2013-09-17 07:04:41 -04:00
|
|
|
grunt.registerTask('dist-copy', ['copy']);
|
2013-09-17 08:40:35 -04:00
|
|
|
grunt.registerTask('dist', ['clean', 'dist-npm', 'dist-css', 'dist-copy']);
|
2013-09-16 13:46:04 -04:00
|
|
|
grunt.registerTask('default', ['dist']);
|
|
|
|
|
2013-09-17 07:04:41 -04:00
|
|
|
// Test/Dev tasks
|
|
|
|
grunt.registerTask('dev', ['connect:dev']);
|
2013-09-17 08:40:35 -04:00
|
|
|
grunt.registerTask('test', ['jshint', 'connect:test', 'mocha', 'qunit']);
|
2013-09-17 07:04:41 -04:00
|
|
|
grunt.registerTask('prod', ['connect:prod']);
|
|
|
|
|
2013-05-21 09:38:18 -04:00
|
|
|
};
|