UNPKG

metro4

Version:

The front-end framework for Build responsive, mobile-first projects on the web with the first front-end component library in Metro Style

207 lines (189 loc) 5.98 kB
module.exports = function(grunt) { "use strict"; var watching = grunt.option('watching'); var develop = grunt.option('develop'); var tasks = ['clean', 'less', 'postcss', 'concat']; var watch_files = [ 'js/i18n/*.json', 'js/*.js', 'js/utils/*.js', 'js/plugins/*js', 'less/*.less', 'less/include/*.less', 'less/third-party/*.less', 'less/schemes/*.less', 'less/schemes/builder/*.less', 'Gruntfile.js' ]; require('load-grunt-tasks')(grunt); if (!develop) { tasks.push('uglify'); tasks.push('cssmin'); } tasks.push('copy'); if (watching) { tasks.push('watch'); } grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), banner: '/*\n' + ' * Metro 4 Components Library v<%= pkg.version %> <%= pkg.version_suffix %> (<%= pkg.homepage %>)\n' + ' * Copyright <%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' + ' * Licensed under <%= pkg.license %>\n' + ' */\n', requirejs_banner: "\n(function( factory ) {\n"+ " if ( typeof define === 'function' && define.amd ) {\n" + " define([ 'jquery' ], factory );\n"+ " } else {\n" + " factory( jQuery );\n"+ " }\n"+ "}(function( jQuery ) { ", clean: { build: ['build/js', 'build/css', 'build/mif'] }, concat: { js: { options: { banner: '<%= banner %>' + '<%= requirejs_banner%>', footer: "\n\nreturn METRO_INIT === true ? Metro.init() : Metro;\n\n}));", stripBanners: true, process: function(src, filepath) { return '\n// Source: ' + filepath + '\n\n' + src; // return '\n// Source: ' + filepath + '\n' + src.replace(/(^|\n)[ \t]*('use strict'|"use strict");?\s*/g, '$1'); // return '\n// Source: ' + filepath + '\n' + src.replace(/(^|\n)[ \t]*();?\s*/g, '$1'); } }, src: [ 'js/*.js', 'js/utils/*.js', 'js/plugins/*.js' ], dest: 'build/js/metro.js' }, css: { options: { stripBanners: true, banner: '<%= banner %>' }, src: [ 'build/css/metro.css', 'build/css/metro-colors.css', 'build/css/metro-rtl.css', 'build/css/metro-icons.css' ], dest: 'build/css/metro-all.css' } }, uglify: { options: { banner: '<%= banner %>', stripBanners: false, sourceMap: true, preserveComments: false }, core: { src: 'build/js/metro.js', dest: 'build/js/metro.min.js' } }, less: { options: { paths: "less/", strictMath: false, sourceMap: false, banner: '<%= banner %>' }, src: { expand: true, cwd: "less/", src: ["metro.less", "metro-rtl.less", "metro-colors.less", "metro-icons.less"], ext: ".css", dest: "build/css" }, schemes: { expand: true, cwd: "less/schemes/", src: ["*.less"], ext: ".css", dest: "build/css/schemes" }, third: { expand: true, cwd: "less/third-party/", src: ["*.less"], ext: ".css", dest: "build/css/third-party" }, docs: { expand: true, cwd: "docs/css/", src: ["*.less"], ext: ".css", dest: "docs/css" } }, postcss: { options: { map: false, processors: [ require('autoprefixer')({ browsers: ['last 2 versions'] }) ] }, dist: { src: 'build/css/*.css' }, schemes: { src: 'build/css/schemes/*.css' }, third: { src: 'build/css/third-party/*.css' } }, cssmin: { src: { expand: true, cwd: "build/css", src: ['*.css', '!*.min.css'], dest: "build/css", ext: ".min.css" }, schemes: { expand: true, cwd: "build/css/schemes", src: ['*.css', '!*.min.css'], dest: "build/css/schemes", ext: ".min.css" }, third: { expand: true, cwd: "build/css/third-party", src: ['*.css', '!*.min.css'], dest: "build/css/third-party", ext: ".min.css" } }, copy: { fonts: { expand: true, cwd: 'icons', src: '**/*', dest: 'build/mif' }, docs: { expand: true, cwd: 'build', src: '**/*', dest: 'docs/metro' } }, watch: { scripts: { files: watch_files, tasks: tasks } } }); grunt.registerTask('default', tasks); };