/* global require, module */ var path = require('path'); module.exports = function(grunt) { 'use strict'; // These plugins provide necessary tasks. /* [Build plugin & task ] ------------------------------------*/ grunt.loadNpmTasks('grunt-module-dependence'); grunt.loadNpmTasks('grunt-replace'); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-browser-sync'); grunt.loadNpmTasks('grunt-contrib-watch'); var pkg = grunt.file.readJSON('package.json'); var banner = '/*!\n' + ' * ====================================================\n' + ' * <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' + '<%= grunt.template.today("yyyy-mm-dd") %>\n' + '<%= pkg.homepage ? " * " + pkg.homepage + "\\n" : "" %>' + ' * GitHub: <%= pkg.repository.url %> \n' + ' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' + ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %>\n' + ' * ====================================================\n' + ' */\n\n'; var expose = '\nuse(\'expose-kityminder\');\n'; // Project configuration. grunt.initConfig({ // Metadata. pkg: pkg, clean: { last: 'dist' }, // watch watch: { files: 'src/**', tasks: ['build'] }, // browser sync for dev browserSync: { bsFiles: { dist: 'dist/css/*.css', src: 'src/**' }, options: { server: { baseDir: './', index: 'dev.html', watchTask: true } } }, // resolve dependence dependence: { options: { base: 'src', entrance: 'expose-kityminder' }, merge: { files: [{ src: 'src/**/*.js', dest: 'dist/kityminder.core.js' }] } }, // concat, just add closure concat: { options: { banner: banner + '(function () {\n', footer: expose + '})();' }, build: { files: { 'dist/kityminder.core.js': ['dist/kityminder.core.js'] } } }, uglify: { options: { banner: banner }, minimize: { src: 'dist/kityminder.core.js', dest: 'dist/kityminder.core.min.js' } }, copy: { dist: { src: 'src/kityminder.css', dest: "dist/kityminder.core.css" } } }); // Build task(s). grunt.registerTask('build', ['clean', 'dependence', 'concat:build', 'uglify:minimize', 'copy']); grunt.registerTask('dev', ['browserSync', 'watch']); };