habitica/Gruntfile.js

143 lines
4.5 KiB
JavaScript
Raw Normal View History

2013-09-06 17:19:43 +00:00
/*global module:false*/
2016-03-03 03:36:27 +00:00
require('babel-register');
var _ = require('lodash');
2013-09-06 17:19:43 +00:00
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
2014-02-14 17:35:21 +00:00
pkg: grunt.file.readJSON('package.json'),
2015-02-07 03:13:26 +00:00
karma: {
unit: {
configFile: 'test/client-old/spec/karma.conf.js'
2015-02-07 03:13:26 +00:00
},
continuous: {
configFile: 'test/client-old/spec/karma.conf.js',
2015-02-07 03:13:26 +00:00
singleRun: true,
autoWatch: false
}
},
clean: {
2015-09-12 00:59:06 +00:00
build: ['website/build']
},
cssmin: {
dist: {
options: {
report: 'gzip'
},
files:{
"website/client-old/css/habitrpg-shared.css": [
"website/assets/sprites/dist/spritesmith*.css",
"website/assets/sprites/css/backer.css",
"website/assets/sprites/css/Mounts.css",
"website/assets/sprites/css/index.css"
]
}
}
},
2015-02-07 03:13:26 +00:00
stylus: {
build: {
options: {
compress: false, // AFTER
'include css': true,
paths: ['website/client-old']
2015-02-07 03:13:26 +00:00
},
files: {
'website/build/app.css': ['website/client-old/css/index.styl'],
'website/build/static.css': ['website/client-old/css/static.styl']
2015-02-07 03:13:26 +00:00
}
}
},
copy: {
build: {
files: [
{expand: true, cwd: 'website/client-old/', src: 'favicon.ico', dest: 'website/build/'},
{expand: true, cwd: 'website/client-old/', src: 'favicon_192x192.png', dest: 'website/build/'},
{expand: true, cwd: 'website/assets/sprites/dist/', src: 'spritesmith*.png', dest: 'website/build/static/sprites'},
{expand: true, cwd: 'website/assets/sprites/', src: 'backer-only/*.gif', dest: 'website/build/'},
{expand: true, cwd: 'website/assets/sprites/', src: 'npc_ian.gif', dest: 'website/build/'},
{expand: true, cwd: 'website/assets/sprites/', src: 'quest_*.gif', dest: 'website/build/'},
{expand: true, cwd: 'website/client-old/', src: 'bower_components/bootstrap/dist/fonts/*', dest: 'website/build/'}
2015-02-07 03:13:26 +00:00
]
}
},
2013-09-10 12:43:30 +00:00
// UPDATE IT WHEN YOU ADD SOME FILES NOT ALREADY MATCHED!
hashres: {
build: {
options: {
fileNameFormat: '${name}-${hash}.${ext}'
},
src: [
'website/build/*.js',
'website/build/*.css',
2015-02-07 03:13:26 +00:00
'website/build/favicon.ico',
'website/build/favicon_192x192.png',
'website/build/*.png',
'website/build/static/sprites/*.png',
'website/build/*.gif',
2015-02-06 22:05:55 +00:00
'website/build/bower_components/bootstrap/dist/fonts/*'
],
2015-02-07 03:13:26 +00:00
dest: 'website/build/*.css'
}
2013-09-07 10:47:44 +00:00
}
});
//Load build files from client-old/manifest.json
grunt.registerTask('loadManifestFiles', 'Load all build files from client-old/manifest.json', function(){
var files = grunt.file.readJSON('./website/client-old/manifest.json');
2015-02-07 03:13:26 +00:00
var uglify = {};
var cssmin = {};
_.each(files, function(val, key){
var js = uglify['website/build/' + key + '.js'] = [];
_.each(files[key].js, function(val){
2015-02-09 02:19:54 +00:00
var path = "./";
if( val.indexOf('common/') == -1)
path = './website/client-old/';
2015-02-09 02:19:54 +00:00
js.push(path + val);
2015-02-07 03:13:26 +00:00
});
var css = cssmin['website/build/' + key + '.css'] = [];
_.each(files[key].css, function(val){
2015-02-09 02:19:54 +00:00
var path = "./";
if( val.indexOf('common/') == -1) {
path = (val == 'app.css' || val == 'static.css') ? './website/build/' : './website/client-old/';
}
2015-02-07 03:13:26 +00:00
css.push(path + val)
});
});
grunt.config.set('uglify.build.files', uglify);
grunt.config.set('uglify.build.options', {compress: false});
grunt.config.set('cssmin.build.files', cssmin);
// Rewrite urls to relative path
grunt.config.set('cssmin.build.options', {'target': 'website/client-old/css/whatever-css.css'});
2015-02-07 03:13:26 +00:00
});
// Register tasks.
2015-11-11 14:59:07 +00:00
grunt.registerTask('build:prod', ['loadManifestFiles', 'clean:build', 'uglify', 'stylus', 'cssmin', 'copy:build', 'hashres']);
grunt.registerTask('build:dev', ['cssmin', 'stylus']);
grunt.registerTask('build:test', ['build:dev']);
2013-09-06 17:19:43 +00:00
// Load tasks
2015-02-07 03:13:26 +00:00
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-stylus');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-hashres');
2016-09-21 12:37:44 +00:00
if (process.env.NODE_ENV !== 'production') grunt.loadNpmTasks('grunt-karma');
2013-09-06 17:19:43 +00:00
};