Created
August 30, 2014 15:23
-
-
Save Illizian/8dc73c9f485eb5d56d8d to your computer and use it in GitHub Desktop.
alexscotton.com
This file contains 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
var rewriteRulesSnippet = require("grunt-connect-rewrite/lib/utils").rewriteRequest; | |
module.exports = function(grunt) { | |
grunt.initConfig({ | |
pkg: grunt.file.readJSON('package.json'), | |
uglify: { | |
options: { | |
banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n' | |
}, | |
build: { | |
files: { | |
'dist/js/main.min.js': ['src/js/main.js', '.tmp/js/coffee.js'], | |
'dist/js/highlight.min.js': ['src/js/highlight.pack.js'], | |
} | |
} | |
}, | |
jshint: { | |
files: ['gruntfile.js', 'src/js/*.js', '!src/js/highlight.pack.js'], | |
options: { | |
// options here to override JSHint defaults | |
globals: { | |
jQuery: true, | |
console: true, | |
module: true, | |
document: true | |
} | |
} | |
}, | |
less: { | |
build: { | |
options: { | |
yuicompress: true | |
}, | |
files: { | |
'dist/css/main.min.css': [ 'src/css/main.less', | |
'src/css/style-config.less' ] | |
} | |
} | |
}, | |
coffee: { | |
build: { | |
compile: { | |
files: { | |
// 'path/to/result.js': 'path/to/source.coffee', // 1:1 compile | |
'.tmp/js/coffee.js': ['src/js/*.coffee', 'src/js/**/*.coffee'] | |
} | |
} | |
} | |
}, | |
pages: { | |
options: { | |
pageSrc: 'src/views/pages' | |
}, | |
posts: { | |
src: 'src/views/posts', | |
dest: 'dist', | |
layout: 'src/views/layouts/post.jade', | |
url: 'post/:title' | |
} | |
}, | |
uncss: { | |
dist: { | |
// src: ['dist/post/*.html', 'dist/*.html'], | |
// dest: '/dist/css/main.min.css', | |
files: { | |
'css/main.min.css' : ['dist/*.html'], | |
'/../css/main.min.css' : ['dist/post/*.html'], | |
}, | |
options: { | |
report: 'min' // optional: include to report savings | |
} | |
} | |
}, | |
clean: { | |
dev: ['dev'], | |
build: ['dist'], | |
pages: ['dist/*.html'], | |
posts: ['dist/posts/*.html'], | |
images: ['dist/images'] | |
}, | |
tinypng: { | |
options: { | |
apiKey: "PGas7nDE0n3nkHCseID8P9qSpUYBuhIc", | |
summarize: true, | |
showProgress: true, | |
}, | |
compress: { | |
expand: true, | |
src: ['*.png'], | |
cwd: 'src/images', | |
dest: 'dist/images', | |
ext: '.png' | |
} | |
}, | |
copy: { | |
main: { | |
files: [ | |
{expand: true, cwd: 'src', src: ['.htaccess', 'favicon.ico', 'robots.txt'], dest: 'dist/' } | |
] | |
}, | |
devJs: { | |
files: [ | |
{expand: true, cwd: 'src/js', src: ['*.js', '**/*.js'], dest: 'dist/js/'}, | |
{src: '.tmp/js/coffee.js', dest: 'dist/js/'}, | |
] | |
}, | |
devImages: { | |
files: [ | |
{expand: true, cwd: 'src/images', src: ['*.*'], dest: 'dist/images/'}, | |
] | |
}, | |
buildImages: { | |
files: [ | |
{expand: true, cwd: 'src/images', src: ['*.*', '!*.png'], dest: 'dist/images/'}, | |
] | |
} | |
}, | |
'sails-linker': { | |
defaultOptions: { | |
options: { | |
startTag: '<!--SCRIPTS-->', | |
endTag: '<!--SCRIPTS END-->', | |
fileTmpl: '<script src="%s"></script>', | |
relative: true, | |
appRoot: 'dist/' | |
}, | |
files: { | |
'src/views/partials/snippets.html': ['dist/js/**/*.js', 'dist/js/*.js'] | |
}, | |
}, | |
}, | |
karma: { | |
options: { | |
configFile: 'karma.conf.js', | |
runnerPort: 9999, | |
browsers: ['PhantomJS'] | |
}, | |
continuous: { | |
singleRun: true, | |
browsers: ['PhantomJS'] | |
}, | |
dev: { | |
reporters: 'dots' | |
} | |
}, | |
simplemocha: { | |
options: { | |
globals: ['should'], | |
timeout: 10000, | |
ignoreLeaks: false, | |
ui: 'bdd', | |
reporter: 'spec' | |
}, | |
all: { | |
src: ['test/buildSpec.js'] | |
} | |
}, | |
watch: { | |
options: { | |
livereload: true, | |
port: 9002 | |
}, | |
css: { | |
files: ['src/css/less/*.less', 'src/css/*.less'], | |
tasks: ['less', 'uncss'], | |
}, | |
js: { | |
files: ['src/js/**/*.js', 'src/js/*.js', 'test/*.js'], | |
tasks: ['copy:devJs', 'sails-linker', 'clean:pages', 'clean:posts', 'pages'], | |
}, | |
coffee: { | |
files: ['src/**/*.coffee', 'src/*.coffee'], | |
tasks: ['coffee:compile', 'copy:devJs', 'sails-linker', 'clean:pages', 'clean:posts', 'pages'], | |
}, | |
pages: { | |
files: ['src/**/**/*.jade', 'src/**/*.jade', 'src/*.jade', 'src/views/pages/*.html', 'src/pages/*.ejs', 'src/pages/*.eco'], | |
tasks: ['clean:pages', 'clean:posts', 'pages', 'uncss'], | |
}, | |
posts: { | |
files: ['src/**/**/*.jade', 'src/**/*.jade', 'src/*.jade', 'src/views/**/*.md', 'src/views/posts/*.mdown', 'src/posts/*.markdown'], | |
tasks: ['clean:pages', 'clean:posts', 'pages', 'uncss'], | |
}, | |
}, | |
open : { | |
dev : { | |
path: 'http://127.0.0.1:9000' | |
} | |
}, | |
connect: { | |
options: { | |
port: 9000, | |
hostname: "127.0.0.1" | |
}, | |
rules: [{ | |
from: '(^((?!css|html|js|jpg|png|fonts|\/$).)*$)', | |
to: "$1.html" | |
}], | |
dev: { | |
options: { | |
base: "./dist", | |
middleware: function(connect, options) { | |
return [rewriteRulesSnippet, connect["static"](require("path").resolve("./dist"))]; | |
} | |
} | |
}, | |
} | |
}); | |
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); | |
grunt.registerTask('default', [ | |
'clean:build', // Clean dist directory | |
'jshint', // JS Lint in src directory | |
'less:build', // Compile LESS to dist | |
'coffee:build', // Compile coffee in src/js into .tmp/js/coffee.js | |
'uglify:build', // Minify JS from src/js & .tmp/js/coffee.js into dist/js | |
'sails-linker', // Link JS files in /dist/js to snippets.html | |
'tinypng:compress',// Use tinypng to compress any pngs in /src/images/ and store relative in /dist/images/ | |
'copy:main', // Copy .htaccess and robots.txts etc to /dist | |
'copy:buildImages',// Copy image assets to /dist/images | |
'pages', // Build Pages | |
'uncss', // Remove unused CSS rules | |
]); | |
grunt.registerTask('dev', [ | |
'clean:build', // Clean dist directory | |
'less:build', // Compile LESS to dist | |
'coffee:build', // Compile coffee in src/js into src/js/coffee.js | |
'copy:main', // Copy .htaccess and robots.txts etc to /dist | |
'copy:devImages', // Copy image assets to /dist/images | |
'copy:devJs', // Copy JS assets to /dist/js | |
'sails-linker', // Link JS files in /dist/js to snippets.html | |
'pages', // Build Pages | |
'uncss', // Remove unused CSS rules | |
'configureRewriteRules', | |
'connect:dev', | |
'open', | |
'watch' | |
]); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment