Files
minewatch/Gruntfile.js

241 lines
6.6 KiB
JavaScript

module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
copy: {
dev: {
files: [
{
expand: true,
cwd: 'websrc',
src: ['**', '!config/**', '!css/**'],
dest: 'build/'
},
{
expand: true,
cwd: 'websrc/config',
src: [ '*.js' ],
dest: 'websrc/config/.temp/'
}
]
},
prod: {
files: [
{
expand: true,
cwd: 'websrc',
src: ['**', '!config/**', '!css/**', '!js/**'],
dest: 'build/'
}
]
},
jsvendor: {
files: [
{
expand: true,
flatten: true,
cwd: 'bower_components',
src: [
'jquery/**/jquery.min.js',
'modernizr/**/modernizr.js',
'foundation/**/foundation.min.js'
],
dest: 'build/js/vendor/'
}
]
},
cssvendor: {
files: [
{
expand: true,
flatten: true,
cwd: 'bower_components',
src: [
'**/foundation.min.css'
],
dest: 'build/css/vendor/'
}
]
}
},
clean: {
build: {
src: [ 'build' ]
},
temp: {
src: [ 'websrc/config/.temp']
}
},
closureCompiler: {
options: {
compilerFile: 'node_modules/closure-compiler-jar/compiler.jar',
checkModified: true
},
minify: {
files: [
{
expand: true,
cwd: 'websrc/js',
src: ['*.js', '!**/*.min.js'],
dest: 'build/js/',
ext: '.min.js'
},
{
expand: true,
cwd: 'websrc/config',
src: ['*.js'],
dest: 'websrc/config/.temp/',
ext: '.js'
}
]
}
},
sass: {
prod: {
options: {
style: 'compressed'
},
files: {
'build/css/styles.css':'websrc/css/styles.scss',
'websrc/config/.temp/styles.css':'websrc/config/styles.scss'
}
},
dev: {
files: {
'build/css/styles.css':'websrc/css/styles.scss',
'websrc/config/.temp/styles.css':'websrc/config/styles.scss'
}
}
},
autoprefixer: {
build: {
expand: true,
cwd: 'build/css',
src: [ '*.css' ],
dest: 'build/css'
}
},
watch: {
stylesheets: {
files: 'websrc/css/*.scss',
tasks: [ 'sass:dev' ]
},
copy: {
files: [ 'websrc/**', '!websrc/css/**', '!websrc/config/**' ],
tasks: [ 'copy-dev' ]
},
config: {
files: 'websrc/config/*',
tasks: [ 'copy:dev', 'sass:dev', 'htmlbuild', 'clean:temp']
}
},
fileblocks: {
options: {
removeAnchors: true
},
todos: {
src: 'build/index.php',
blocks: {
'styles': {
cwd: 'build',
src: [
'css/vendor/*.css',
'css/*.css'
]
},
'app': {
cwd: 'build',
src: [
'js/vendor/jquery.min.js',
'js/vendor/*.js',
'js/*.js'
]
}
}
}
},
htmlbuild: {
dist: {
src: 'websrc/config/index.html',
dest: 'build/config/',
options: {
beautify: false,
sections: {
css: 'websrc/config/.temp/styles.css',
js: 'websrc/config/.temp/app.js'
}
}
}
},
shell: {
pblbuild: {
command: [
'cd pebbleapp',
'pebble build'
].join('&&')
},
pblinstall: {
command: [
'cd pebbleapp',
'pebble install'
].join('&&')
}
}
});
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-closure-tools');
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-autoprefixer');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-file-blocks');
grunt.loadNpmTasks('grunt-html-build');
grunt.loadNpmTasks('grunt-shell');
grunt.registerTask(
'pbl-build',
'Builds the Pebble app',
['shell:pblbuild']
);
grunt.registerTask(
'pbl-install',
'Builds and installs the Pebble app',
['shell:pblbuild', 'shell:pblinstall']
);
grunt.registerTask(
'copy-dev',
'Copys all files',
['copy:dev', 'copy:jsvendor', 'copy:cssvendor']
);
grunt.registerTask(
'copy-prod',
'Copys all files',
['copy:prod', 'copy:jsvendor', 'copy:cssvendor']
);
grunt.registerTask(
'build-dev',
'Compiles all of the assets and copies the files to the build directory. Does not minify and obfuscate',
[ 'clean', 'copy-dev', 'sass:dev', 'autoprefixer', 'fileblocks', 'htmlbuild', 'clean:temp']
);
grunt.registerTask(
'build-prod',
'Compiles all of the assets and copies the files to the build directory.',
[ 'clean', 'copy-prod', 'closureCompiler', 'sass:prod', 'autoprefixer', 'fileblocks', 'htmlbuild', 'clean:temp']
);
grunt.registerTask(
'default',
'Runs build-dev',
[ 'build-dev' ]
);
};