Created
June 16, 2013 04:17
-
-
Save DekusDenial/5790740 to your computer and use it in GitHub Desktop.
More comprehensive Gruntfile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module.exports = (grunt) -> | |
grunt.initConfig | |
appDir: "./app" | |
srcDir: "<%= appDir %>/src" | |
contentDir: "<%= appDir %>/content" | |
templateDir: "<%= appDir %>/templates" | |
vendorDir: "<%= appDir %>/vendor" | |
cssDir: "<%= appDir %>/stylesheets" | |
testDir: "./test" | |
buildDir: "./tmp/build" | |
outputDir: "./public" | |
coffee: | |
options: | |
bare: true | |
all: | |
files: [ | |
expand: true, | |
src: ["<%= srcDir %>/**/*.coffee"] | |
dest: "<%= buildDir %>" | |
ext: ".js" | |
] | |
changed: | |
files: [ | |
expand: true | |
src: "<%= grunt.regarde.changed %>" | |
dest: "<%= buildDir %>" | |
ext: ".js" | |
] | |
jade: | |
options: | |
client: true | |
compileDebug: false | |
namespace: "APPLICATION_TEMPLATES" | |
processName: (path) -> | |
path | |
.replace(/^.*\btemplates\//, "") | |
.replace(/\..*$/, "") | |
all: | |
files: [ | |
expand: true | |
src: ["<%= templateDir %>/**/*.jade"] | |
dest: "<%= buildDir %>" | |
ext: ".js" | |
] | |
changed: | |
files: [ | |
expand: true | |
src: "<%= grunt.regarde.changed %>" | |
dest: "<%= buildDir %>" | |
ext: ".js" | |
] | |
concat: | |
js: | |
src: [ # Order matters, at some point we should use requireJS or something to fix that | |
"<%= vendorDir %>/**/*.js", | |
"<%= buildDir %>/<%= templateDir %>/**/*.js", | |
"<%= buildDir %>/<%= srcDir %>/*.js", | |
"<%= buildDir %>/<%= srcDir %>/modules/**/*.js", | |
"<%= buildDir %>/<%= srcDir %>/directives/**/*.js", | |
"<%= buildDir %>/<%= srcDir %>/services/**/*.js", | |
"<%= buildDir %>/<%= srcDir %>/filters/**/*.js", | |
"<%= buildDir %>/<%= srcDir %>/controllers/**/*.js", | |
] | |
dest: "<%= outputDir %>/js/app.js" | |
less: | |
options: | |
paths: "<%= cssDir %>" | |
all: | |
files: [ | |
src: "<%= cssDir %>/app.less" | |
dest: "<%= outputDir %>/css/app.css" | |
] | |
# Copy static files | |
copy: | |
html: | |
files: [ | |
expand: true | |
cwd: "<%= contentDir %>/html" | |
src: ["**/*.html"] | |
dest: "<%= outputDir %>" | |
] | |
images: | |
files: [ | |
expand: true | |
cwd: "<%= contentDir %>/images" | |
src: ["**/*"] | |
dest: "<%= outputDir %>/images" | |
] | |
regarde: | |
coffee: | |
files: "<%= srcDir %>/**/*.coffee" | |
tasks: ["coffee:changed", "concat:js"] | |
templates: | |
files: "<%= srcDir %>/**/*.jade" | |
tasks: ["jade:changed", "concat:js"] | |
vendor: | |
files: "<%= vendorDir %>/**/*.js" | |
tasks: ["concat:js"] | |
less: | |
files: "<%= cssDir %>/**/*.less" | |
tasks: ["spawn_less"] | |
html: | |
files: "<%= contentDir %>/html/**/*.html" | |
tasks: ["copy:html"] | |
images: | |
files: "<%= contentDir %>/images/**/*" | |
tasks: ["copy:images"] | |
connect: | |
server: | |
options: | |
hostname: "0.0.0.0" | |
port: 9292 | |
base: "<%= outputDir %>" | |
keepalive: true | |
# Clean up artifacts | |
clean: | |
build: "<%= buildDir %>" | |
output: "<%= outputDir %>" | |
# Execute server script | |
exec: | |
server: | |
cmd: "./server.js" | |
karma: | |
unit: | |
configFile: "<%= testDir %>/unit_conf.js" | |
e2e: | |
configFile: "<%= testDir %>/e2e_conf.js" | |
# The contrib-less task has an outstanding bug that will kill a running grunt | |
# process (like a watch process) when it fails. | |
grunt.registerTask 'spawn_less', 'Run Less in a subprocess', () -> | |
done = this.async() | |
grunt.util.spawn grunt: true, args: ['less'], (err) -> | |
if err | |
grunt.log.writeln(">> Error compiling LESS file!") | |
done() | |
grunt.registerTask "js", ["coffee:all", "jade:all", "concat:js"] | |
grunt.registerTask "build", ["clean", "js", "less", "copy"] | |
grunt.registerTask "server", ["exec:server"] | |
grunt.registerTask "unit", ["build", "karma:unit"] | |
grunt.registerTask "e2e", ["build", "karma:e2e"] | |
grunt.registerTask "ci", ["build", "karma"] | |
grunt.loadNpmTasks "grunt-contrib-coffee" | |
grunt.loadNpmTasks "grunt-contrib-jade" | |
grunt.loadNpmTasks "grunt-contrib-concat" | |
grunt.loadNpmTasks "grunt-contrib-less" | |
grunt.loadNpmTasks "grunt-contrib-copy" | |
grunt.loadNpmTasks "grunt-regarde" | |
grunt.loadNpmTasks "grunt-contrib-connect" | |
grunt.loadNpmTasks "grunt-contrib-clean" | |
grunt.loadNpmTasks "grunt-exec" | |
grunt.loadNpmTasks "grunt-karma" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "rcr-frontend", | |
"version": "0.1.0", | |
"dependencies": { | |
"grunt": "latest", | |
"grunt-contrib-coffee": "latest", | |
"grunt-contrib-jade": "latest", | |
"grunt-contrib-less": "latest", | |
"grunt-contrib-copy": "latest", | |
"grunt-contrib-connect": "latest", | |
"grunt-contrib-concat": "latest", | |
"grunt-regarde": "latest", | |
"grunt-notify": "latest", | |
"grunt-contrib-clean": "latest", | |
"grunt-karma": "latest", | |
"grunt-exec": "latest" | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env node | |
var spawn = require("child_process").spawn, | |
watcher = spawn("grunt", ["regarde", "--force"]), | |
server = spawn("grunt", ["build", "connect:server"]); | |
watcher.stdout.on("data", function(data) { | |
var importantOutput = data.toString().split("\r?\n").filter(function(str) { | |
return />>|Done|Warning|Running/.test(str); | |
}); | |
process.stdout.write(importantOutput.join("\n")); | |
// process.stdout.write(data); | |
}); | |
server.stdout.on("data", function(data) { | |
process.stdout.write(data); | |
}); | |
watcher.on("exit", function(code, signal) { | |
server.kill(); | |
process.exit(); | |
}); | |
server.on("exit", function(code, signal) { | |
watcher.kill(); | |
process.exit(); | |
}); | |
process.on("exit", function() { | |
watcher.kill(); | |
server.kill(); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment