Skip to content

Instantly share code, notes, and snippets.

@douglasdeodato
Created November 9, 2015 11:28
Show Gist options
  • Save douglasdeodato/2137804a38ca1bc42f72 to your computer and use it in GitHub Desktop.
Save douglasdeodato/2137804a38ca1bc42f72 to your computer and use it in GitHub Desktop.
module.exports = function (grunt) {
var config = {};
//all tasks that must be loaded.
var tasks = [
'grunt-contrib-watch'
,'grunt-contrib-concat'
,'grunt-contrib-uglify'
,'grunt-contrib-sass'
,'grunt-contrib-htmlmin'
,'grunt-contrib-imagemin'
,'grunt-spritesmith'
];
//Concat ===============================
var concat;
config.concat = concat = {};
concat.dev = {
files: {
"public/js/demo-site.development.js": [
"bower_components/jquery/dist/jquery.min.js"
,"bower_components/bootstrap/dist/js/bootstrap.min.js"
,"lib/javascripts/tooltip.js"
]
}
};
//Uglify ===============================
config.uglify = {dist: {
options: {sourceMap:"public/myapp.dist.js.map", report:"gzip"}
,files: {
"public/js/demo-site.dist.js": ["public/js/demo-site.development.js"]
}
}}
//Jasmine ===============================
/* var jasmine;
config.jasmine = jasmine = {};
jasmine.calc = {
src:"calc/calc.js"
, options:{
specs: "spec/calc.spec.js"
}
};*/
//Watch ===============================
config.watch = {
scripts: {
files: ["lib/**/*.js", "sass/**/*.scss"]
,tasks: ["dev"]
//,tasks: ["dev",'sass:dist']
}
}
//Sass ===============================
var sass;
config.sass = sass = {};
//production
sass.dist = {
options: { style: "compressed"}
, files: {
"public/stylesheets/demo-site.production.css" : "sass/main.scss"
}
};
//development env.
sass.dev = {
options: { style: "expanded", lineNumber: true}
, files: {
"public/stylesheets/demo-site.development.css" : "sass/main.scss"
}
};
//Html Minifier ===============================
var htmlmin;
config.htmlmin = htmlmin = {};
htmlmin.dist = {
options: {
collapseWhitespace: true,
conservativeCollapse: true,
// minifyCSS: true,
// minifyJS: true,
removeAttributeQuotes: true,
removeComments: true
},
files: {
'layout.min.html': 'jade/compiled-templates/layout.html'
}
};
//Image min ===============================
var imagemin;
config.imagemin = imagemin = {};
imagemin.dist = {
options: {
optimizationLevel: 5,
progressive: true,
},
files: [{
expand: true,
cwd: 'public/images/',
src: ['**/*.{png,jpg,gif}'],
dest: 'public/images/min'
}]
};
//Sprite ===============================
var sprite;
config.sprite = sprite = {};
// Configure grunt
sprite.dist ={
sprite:{
all: {
src: 'public/images/*.png',
dest: 'public/images/sprite/spritesheet.png',
destCss: 'sass/sprites.css'
}
}
};
//joycss ===============================
var joycss;
config.joycss = joycss = {};
joycss.dist = {
joycss: {
index: {
//紧凑拼图
options: { layout: 'close', force8bit: false },
cwd: 'public/images/min',
src: ['sass/index.less'],
dest: 'public/images/sprite'
},
detail: {
//水平布局
options: { layout: 'horizontal' },
cwd: 'public/images/min',
src: ['sass/index.less'],
dest: 'public/images/sprite'
}
}
};
//grunt.loadNpmTasks('grunt-joycss');
//Register custom tasks ===============================
grunt.registerTask('default',['dev']);
grunt.registerTask('dev',['concat:dev','sass:dev']);
grunt.registerTask('dist',['htmlmin','imagemin','sprite','concat:dev', 'uglify' , 'sass:dist']);
//grunt watch just for sass
//grunt.registerTask('dev',['sass:dev']);
//grunt.registerTask('dev',['imagemin']);
//General setup ===============================
grunt.initConfig(config);
tasks.forEach(grunt.loadNpmTasks);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment