mail/Gruntfile.js

222 lines
7.5 KiB
JavaScript
Raw Normal View History

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,
2013-09-27 10:17:38 -04:00
base: './dist/',
2013-08-09 11:23:38 -04:00
keepalive: true,
middleware: function(connect, options) {
// Return array of whatever middlewares you want
2013-09-27 10:17:38 -04:00
return [
function(req, res, next) {
res.setHeader('Content-Security-Policy', "default-src 'self'; 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.
2013-09-27 10:17:38 -04:00
connect.static(options.base)
];
2013-08-09 11:23:38 -04:00
}
}
}
},
2013-05-22 04:16:26 -04:00
2013-08-09 11:23:38 -04:00
jshint: {
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'*/
]
}
}
},
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-09-16 13:46:04 -04:00
},
clean: {
2013-09-24 09:03:52 -04:00
dist: ['dist', 'src/lib/*.js', 'test/new-unit/lib']
2013-09-16 13:46:04 -04:00
},
sass: {
dist: {
files: {
'dist/css/all.css': 'src/sass/all.scss'
}
}
},
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
},
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: {
npm: {
2013-09-16 13:46:04 -04:00
expand: true,
flatten: true,
2013-09-17 11:34:40 -04:00
cwd: 'node_modules/',
2013-09-19 12:35:12 -04:00
src: [
'requirejs/require.js',
2013-09-19 12:35:12 -04:00
'crypto-lib/node_modules/node-forge/js/*.js',
'imap-client/src/*.js',
'imap-client/node_modules/inbox/src/*.js',
'imap-client/node_modules/setimmediate/setImmediate.js',
'imap-client/node_modules/inbox/node_modules/node-shims/src/*.js',
'imap-client/node_modules/inbox/node_modules/utf7/src/utf7.js',
'imap-client/node_modules/inbox/node_modules/xoauth2/src/xoauth2.js',
'imap-client/node_modules/mimelib/src/mimelib.js',
'imap-client/node_modules/mimelib/node_modules/addressparser/src/addressparser.js',
'imap-client/node_modules/mimelib/node_modules/encoding/src/encoding.js',
'imap-client/node_modules/mimelib/node_modules/encoding/node_modules/iconv-lite/src/*.js',
'imap-client/node_modules/mimelib/node_modules/encoding/node_modules/mime/src/*.js',
'imap-client/node_modules/mailparser/src/*.js',
2013-09-26 07:26:57 -04:00
'imap-client/node_modules/mailparser/node_modules/mime/src/mime.js',
2013-09-27 07:55:08 -04:00
'smtp-client/src/*.js',
'smtp-client/node_modules/mailcomposer/src/*',
'smtp-client/node_modules/nodemailer/src/*',
'smtp-client/node_modules/nodemailer/node_modules/simplesmtp/src/*',
2013-09-19 12:35:12 -04:00
],
dest: 'src/lib/'
2013-09-16 13:46:04 -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'],
dest: 'test/new-unit/lib/'
},
cryptoLib: {
expand: true,
2013-09-17 11:34:40 -04:00
cwd: 'node_modules/crypto-lib/src/',
src: ['*.js'],
dest: 'src/js/crypto/'
},
lib: {
expand: true,
2013-09-17 11:34:40 -04:00
cwd: 'src/lib/',
src: ['**'],
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/'
},
font: {
2013-09-16 13:46:04 -04:00
expand: true,
2013-09-17 11:34:40 -04:00
cwd: 'src/font/',
src: ['*'],
dest: 'dist/font/'
2013-09-16 13:46:04 -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: ['*'],
dest: 'dist/img/'
},
tpl: {
expand: true,
2013-09-17 11:34:40 -04:00
cwd: 'src/tpl/',
src: ['*'],
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');
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
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']);
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']);
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
};