zurb-foundation-5
Version:
Foundation 5 for npm (no code modification from original repo)
252 lines (234 loc) • 7.78 kB
JavaScript
module.exports = function(grunt) {
var hljs = require('highlight.js');
hljs.LANGUAGES['scss'] = require('./lib/scss.js')(hljs);
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
vendor: grunt.file.readJSON('.bowerrc').directory,
foundation: {
js: ['js/foundation/foundation.js', 'js/foundation/foundation.*.js'],
scss: ['scss/foundation.scss','scss/settings.scss']
},
jst: {
compile: {
files: {
'dist/docs/assets/js/templates.js': ['doc/templates/*.html']
}
}
},
assemble: {
options: {
marked: {
highlight: function(code, lang) {
if (lang === undefined) lang = 'bash';
if (lang === 'html') lang = 'xml';
if (lang === 'js') lang = 'javascript';
return '<div class="code-container">' + hljs.highlight(lang, code).value + '</div>';
}
}
},
dist: {
options: {
flatten: false,
assets: 'dist/docs/assets',
data: ['doc/data/*.json'],
helpers: ['doc/helpers/*.js'],
partials: ['doc/includes/**/*.{html,scss}'],
layoutdir: 'doc/layouts',
layout: 'default.html'
},
expand: true,
cwd: 'doc/pages',
src: '**/*.{html,md}',
dest: 'dist/docs/'
}
},
sass: {
dist: {
options: {
loadPath: [__dirname + '/scss'],
bundleExec: true
},
files: {
'dist/assets/css/foundation.css': '<%= foundation.scss %>',
'dist/assets/css/normalize.css': 'scss/normalize.scss',
'dist/docs/assets/css/docs.css': 'doc/assets/scss/docs.scss'
}
}
},
'string-replace': {
dist: {
files: {
'dist/assets/':'dist/assets/bower.json',
'dist/assets/css/':'dist/assets/css/*.css',
'dist/assets/js/':'dist/assets/js/*js',
'dist/assets/js/foundation/':'dist/assets/js/foundation/*js',
'dist/assets/scss/foundation/components/':'dist/assets/scss/foundation/components/*.scss',
'dist/docs/assets/css/':'dist/docs/assets/css/*.css',
'dist/docs/assets/js/':'dist/docs/assets/js/*.js'
},
options: {
replacements: [
{pattern: /{{\s*VERSION\s*}}/g, replacement: '<%= pkg.version %>'}
]
}
}
},
concat: {
dist: {
files: {
'dist/assets/js/foundation.js':'<%= foundation.js %>'
}
}
},
uglify: {
options: {
preserveComments: 'some'
},
dist: {
files: {
'dist/assets/js/foundation.min.js': ['<%= foundation.js %>'],
'dist/docs/assets/js/modernizr.js': ['<%= vendor %>/modernizr/modernizr.js'],
'dist/docs/assets/js/all.js': ['<%= vendor %>/jquery/dist/jquery.js', '<%= vendor %>/lodash/dist/lodash.min.js','<%= vendor %>/fastclick/lib/fastclick.js', '<%= vendor %>/jquery-placeholder/jquery.placeholder.js', '<%= vendor %>/jquery.autocomplete/dist/jquery.autocomplete.js', '<%= foundation.js %>', 'doc/assets/js/docs.js']
}
},
vendor: {
files: {
'dist/assets/js/vendor/placeholder.js': '<%= vendor %>/jquery-placeholder/jquery.placeholder.js',
'dist/assets/js/vendor/fastclick.js': '<%= vendor %>/fastclick/lib/fastclick.js',
'dist/assets/js/vendor/jquery.cookie.js': '<%= vendor %>/jquery.cookie/jquery.cookie.js',
'dist/assets/js/vendor/jquery.js': '<%= vendor %>/jquery/dist/jquery.js',
'dist/assets/js/vendor/modernizr.js': '<%= vendor %>/modernizr/modernizr.js'
}
}
},
copy: {
dist: {
files: [
{expand:true, cwd: 'doc/assets/', src: ['**/*','!{scss,js}/**/*'], dest: 'dist/docs/assets/', filter:'isFile'},
{expand:true, cwd: 'js/', src: ['foundation/*.js'], dest: 'dist/assets/js', filter: 'isFile'},
{src: '<%= vendor %>/jquery/jquery.min.js', dest: 'dist/docs/assets/js/jquery.js'},
{expand:true, cwd: 'scss/', src: '**/*.scss', dest: 'dist/assets/scss/', filter: 'isFile'},
{src: 'bower.json', dest: 'dist/assets/'}
]
}
},
clean: ['dist/'],
connect: {
server: {
options: {
port: 9001,
base: 'dist/'
}
}
},
karma: {
options: {
configFile: 'karma.conf.js',
runnerPort: 9999,
},
continuous: {
singleRun: true,
browsers: ['TinyPhantomJS', 'SmallPhantomJS']
},
dev: {
singleRun: true,
browsers: ['TinyPhantomJS', 'SmallPhantomJS', 'TinyChrome', 'Firefox'],
reporters: 'dots'
},
dev_watch: {
background: true,
browsers: ['TinyPhantomJS', 'SmallPhantomJS', 'TinyChrome', 'Firefox']
},
mac: {
singleRun: true,
browsers: ['TinyPhantomJS', 'SmallPhantomJS', 'TinyChrome', 'Firefox', 'Safari'],
reporters: 'dots'
},
win: {
singleRun: true,
browsers: ['TinyPhantomJS', 'SmallPhantomJS', 'TinyChrome', 'Firefox', 'IE'],
reporters: 'dots'
}
},
watch: {
grunt: {
options: {
reload: true
},
files: ['Gruntfile.js']
},
karma: {
files: [
'dist/assets/js/*.js',
'spec/**/*.js',
'dist/assets/css/*.css'
],
tasks: ['karma:dev_watch:run']
},
sass: {
files: ['scss/**/*.scss', 'doc/assets/**/*.scss'],
tasks: ['sass'],
options: {
livereload:true
}
},
js: {
files: ['js/**/*.js', 'doc/assets/js/**/*.js'],
tasks: ['copy', 'concat', 'uglify'],
options: {livereload:true}
},
assemble_all: {
files: ['doc/{includes,layouts}/**/*.html'],
tasks: ['assemble'],
options: {livereload:true}
},
assemble_pages: {
files: ['doc/pages/**/*.html'],
tasks: ['newer:assemble'],
options: {livereload:true}
},
assets: {
options: {cwd: 'doc/assets/', livereload: true},
files: ['**/*','!{scss,js}/**/*'],
tasks: ['copy']
},
jst: {
files: ['doc/templates/*.html'],
tasks: ['jst'],
options: {livereload:false}
}
},
rsync: {
dist: {
options: {
args: ["--verbose"],
src: "./dist/docs/",
recursive: true,
dest: "/home/deployer/sites/foundation-docs/current",
host: "deployer@72.32.134.77"
}
}
}
});
grunt.loadNpmTasks('assemble');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-karma');
grunt.loadNpmTasks('grunt-newer');
grunt.loadNpmTasks('grunt-rsync');
grunt.loadNpmTasks('grunt-contrib-jst');
grunt.loadNpmTasks('grunt-string-replace');
grunt.task.registerTask('watch_start', ['karma:dev_watch:start', 'watch']);
grunt.registerTask('build:assets', ['clean', 'sass', 'concat', 'uglify', 'copy', 'jst', 'string-replace']);
grunt.registerTask('build', ['build:assets', 'assemble']);
grunt.registerTask('travis', ['build', 'karma:continuous']);
grunt.registerTask('develop', ['travis', 'watch_start']);
grunt.registerTask('deploy', ['build', 'rsync:dist']);
grunt.registerTask('default', ['build', 'watch']);
grunt.registerTask('server', ['connect:server:keepalive']);
};