module.exports = function(grunt) { "use strict"; require("load-grunt-tasks")(grunt); grunt.initConfig({ less: { material: { options: { paths: ["less"], sourceMap: true, sourceMapRootpath: "/", sourceMapFilename: "dist/css/material.css.map", sourceMapURL: "material.css.map" }, files: { "dist/css/material.css": "less/material.less", } }, materialWfont: { options: { paths: ["less"], sourceMap: true, sourceMapRootpath: "/", sourceMapFilename: "dist/css/material-wfont.css.map", sourceMapURL: "material-wfont.css.map" }, files: { "dist/css/material-wfont.css": "less/material-wfont.less", } }, ripples: { options: { paths: ["less"], sourceMap: true, sourceMapRootpath: "/", sourceMapFilename: "dist/css/ripples.css.map", sourceMapURL: "ripples.css.map" }, files: { "dist/css/ripples.css": "less/ripples.less", } } }, sass: { compilesass: { files: { "dist/css/material.css": "sass/material.scss", "dist/css/material-wfont.css": "sass/material-wfont.scss", "dist/css/ripples.css": "sass/ripples.scss" } } }, autoprefixer: { options: { browsers: ["last 3 versions", "ie 8", "ie 9", "ie 10", "ie 11"] }, prefix: { files: { "dist/css/material.css": "dist/css/material.css", "dist/css/material-wfont.css": "dist/css/material-wfont.css", "dist/css/ripples.css": "dist/css/ripples.css" } } }, cssmin: { minifycss: { expand: true, cwd: "dist/css/", src: ["*.css", "!*.min.css"], dest: "dist/css/", ext: ".min.css" } }, uglify: { options: { sourceMap: true }, minifyjs: { files: { "dist/js/material.min.js": "dist/js/material.js", "dist/js/ripples.min.js": "dist/js/ripples.js" } } }, copy: { distjs: { expand: true, cwd: "scripts/", src: "**.js", dest: "dist/js/", flatten: true, filter: "isFile" }, distfonts: { expand: true, cwd: "fonts/", src: "**", dest: "dist/fonts/", flatten: true, filter: "isFile" } }, connect: { options: { port: 8040, hostname: "localhost", livereload: 35729 }, livereload: { options: { open: true, base: "." } }, test: { options: { port: 8041, open: "http://localhost:8041/_SpecRunner.html", base: "." } } }, jasmine: { scripts: "scripts/**/*.js", options: { build: true, specs: "test/*Spec.js", helpers: "test/*Helper.js", vendor: [ "https://code.jquery.com/jquery-1.10.2.min.js", "https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js" ] } }, jshint: { options: { jshintrc: ".jshintrc", reporter: require("jshint-stylish") }, all: [ "Gruntfile.js", "scripts/**/*.js", "template/**/*.js", "!template/**/*.min.js" ], test: { options: { jshintrc: "test/.jshintrc", src: ["test/**/*.js"] } } }, watch: { js: { files: ["Gruntfile.js", "scripts/**/*.js", "template/**/*.js"], tasks: ["newer:jshint:all"] }, jsTest: { files: ["test/**/*.js"], tasks: ["newer:jshint:test", "jasmine"] }, less: { files:["less/**/*.less"], tasks: ["default"] }, sass: { files: ["sass/**/*.scss", "sass/**/*.sass"], tasks: ["scss"] }, livereload: { options: { livereload: "<%= connect.options.livereload %>" }, files: [ "index.html", "dist/css/**/*.css", "**/*.{png,jpg,jpeg,gif,webp,svg}" ] } } }); grunt.registerTask("default", ["less", "autoprefixer", "cssmin", "copy", "uglify"]); grunt.registerTask("scss", ["sass", "autoprefixer", "cssmin", "copy", "uglify"]); grunt.registerTask("build", function(target) { var buildType = "default"; if (target && target === "scss") { buildType = "scss"; } grunt.task.run(["newer:jshint", "jasmine:scripts", buildType]); }); grunt.registerTask("test", [ "jasmine:scripts:build", "connect:test:keepalive" ]); grunt.registerTask("serve", function(target){ var buildTarget = "default"; if(target && target === "scss") { buildTarget = "scss"; } grunt.task.run([ "build:"+ buildTarget, "connect:livereload", "watch" ]); }); grunt.registerTask("cibuild",["newer:jshint", "jasmine:scripts"]); };