Skip to content

Instantly share code, notes, and snippets.

@TechnotronicOz
Created March 1, 2013 19:52
Show Gist options
  • Save TechnotronicOz/5067249 to your computer and use it in GitHub Desktop.
Save TechnotronicOz/5067249 to your computer and use it in GitHub Desktop.
module.exports = function(grunt) {
output_dir = 'htdocs/',
source_dir = 'src/',
temp_dir = source_dir + 'temp/';
grunt.loadNpmTasks('grunt-contrib');
grunt.loadNpmTasks('grunt-image-embed');
// Output dirs
js_dir = output_dir + 'js',
css_dir = output_dir + 'css',
// Source
coffee_dir = source_dir + 'js',
stylus_dir = source_dir + 'css';
// Output files
output_js = output_dir + 'js/plugins.js',
output_css = output_dir + 'css/main.css';
grunt.initConfig({
stylus: {
compile: {
files: {
'temp/main.css' : stylus_dir + '/main.styl'
}
}
},
coffee: {
compile: {
files: {
'htdocs/js/main.js' : [coffee_dir + '/nav.coffee', coffee_dir + '/helpers.coffee', coffee_dir + '/core.coffee', coffee_dir + '/main.coffee'],
'htdocs/js/loader.js' : [coffee_dir + '/loader.coffee']
}
}
},
concat: {
js: {
src: [js_dir + '/vendor/underscore-min.js', js_dir + '/vendor/backbone-min.js', js_dir + '/plugins.js'],
dest: 'temp/compiled.js'
},
css: {
src: 'temp/main.css',
dest: 'temp/compiled.css'
}
},
uglify: {
options: {
compress: true
},
dev: {
src: 'temp/compiled.js',
dest: 'temp/compiled-min.js'
},
prod: {
files: {
'htdocs/js/loader.js': ['htdocs/js/loader.js'],
'htdocs/js/main.js': ['htdocs/js/main.js'],
'temp/compiled-min.js': ['temp/compiled.js']
}
}
},
imageEmbed: {
dist: {
src: 'temp/compiled.css',
dest: 'temp/imageembed.css'
}
},
cssmin: {
compress: {
src: 'temp/imageembed.css',
dest: 'temp/build.css'
}
},
copy: {
dev: {
files: [
{
src: 'temp/main.css',
dest: output_css
},
{
src: 'temp/compiled-min.js',
dest: output_js
}
]
},
prod: {
files: [
{
src: 'temp/build.css',
dest: output_css
},
{
src: 'temp/compiled-min.js',
dest: output_js
}
]
}
},
watch: {
scripts: {
files: [coffee_dir + '/*.coffee', stylus_dir + '/*.styl'],
tasks: ['dev'],
options: {
interrupt: true
}
}
},
clean: {
kill: ['temp']
}
});
grunt.registerTask('default', function() {
grunt.log.writeln('I told you not to use the default task.');
});
grunt.registerTask('dev', ['stylus', 'coffee', 'concat', 'uglify:dev', 'copy:dev', 'clean', 'watch']);
grunt.registerTask('prod', ['stylus', 'coffee', 'concat', 'uglify:prod', 'imageEmbed', 'cssmin', 'copy:prod', 'clean']);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment