Blame | Letzte Änderung | Log anzeigen | RSS feed
/*global module:false, require:false, __dirname:false*/module.exports = function(grunt) {grunt.util.linefeed = "\n";// Project configuration.grunt.initConfig({pkg: grunt.file.readJSON('package.json'),concat: {options : {separator : "\n"},dist: {src: ['src/<%= pkg.name %>.js', 'src/<%= pkg.name %>.*.js', 'src/vakata-jstree.js'],dest: 'dist/<%= pkg.name %>.js'}},copy: {libs : {files : [{ expand: true, cwd : 'libs/', src: ['*'], dest: 'dist/libs/' }]},docs : {files : [{ expand: true, cwd : 'dist/', src: ['**/*'], dest: 'docs/assets/dist/' }]}},uglify: {options: {banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %> - (<%= _.pluck(pkg.licenses, "type").join(", ") %>) */\n',preserveComments: false,//sourceMap: "dist/jstree.min.map",//sourceMappingURL: "jstree.min.map",report: "min",beautify: {ascii_only: true},compress: {hoist_funs: false,loops: false,unused: false}},dist: {src: ['<%= concat.dist.dest %>'],dest: 'dist/<%= pkg.name %>.min.js'}},qunit: {files: ['test/unit/**/*.html']},jshint: {options: {'curly' : true,'eqeqeq' : true,'latedef' : true,'newcap' : true,'noarg' : true,'sub' : true,'undef' : true,'boss' : true,'eqnull' : true,'browser' : true,'trailing' : true,'globals' : {'console' : true,'jQuery' : true,'browser' : true,'XSLTProcessor' : true,'ActiveXObject' : true}},beforeconcat: ['src/<%= pkg.name %>.js', 'src/<%= pkg.name %>.*.js'],afterconcat: ['dist/<%= pkg.name %>.js']},dox: {files: {src: ['src/*.js'],dest: 'docs'}},amd : {files: {src: ['dist/jstree.js'],dest: 'dist/jstree.js'}},less: {production: {options : {cleancss : true,compress : true},files: {"dist/themes/default/style.min.css" : "src/themes/default/style.less","dist/themes/default-dark/style.min.css" : "src/themes/default-dark/style.less"}},development: {files: {"src/themes/default/style.css" : "src/themes/default/style.less","dist/themes/default/style.css" : "src/themes/default/style.less","src/themes/default-dark/style.css" : "src/themes/default-dark/style.less","dist/themes/default-dark/style.css" : "src/themes/default-dark/style.less"}}},watch: {js : {files: ['src/**/*.js'],tasks: ['js'],options : {atBegin : true}},css : {files: ['src/**/*.less','src/**/*.png','src/**/*.gif'],tasks: ['css'],options : {atBegin : true}},},resemble: {options: {screenshotRoot: 'test/visual/screenshots/',url: 'http://127.0.0.1/jstree/test/visual/',gm: false},desktop: {options: {width: 1280,},src: ['desktop'],dest: 'desktop',},mobile: {options: {width: 360,},src: ['mobile'],dest: 'mobile'}},imagemin: {dynamic: {options: { // Target optionsoptimizationLevel: 7,pngquant : true},files: [{expand: true, // Enable dynamic expansioncwd: 'src/themes/default/', // Src matches are relative to this pathsrc: ['**/*.{png,jpg,gif}'], // Actual patterns to matchdest: 'dist/themes/default/' // Destination path prefix},{expand: true, // Enable dynamic expansioncwd: 'src/themes/default-dark/', // Src matches are relative to this pathsrc: ['**/*.{png,jpg,gif}'], // Actual patterns to matchdest: 'dist/themes/default-dark/' // Destination path prefix}]}},replace: {files: {src: ['dist/*.js', 'bower.json', 'component.json', 'jstree.jquery.json'],overwrite: true,replacements: [{from: '{{VERSION}}',to: "<%= pkg.version %>"},{from: /"version": "[^"]+"/g,to: "\"version\": \"<%= pkg.version %>\""},]}}});grunt.loadNpmTasks('grunt-contrib-jshint');grunt.loadNpmTasks('grunt-contrib-concat');grunt.loadNpmTasks('grunt-contrib-copy');grunt.loadNpmTasks('grunt-contrib-uglify');grunt.loadNpmTasks('grunt-contrib-less');grunt.loadNpmTasks('grunt-contrib-qunit');grunt.loadNpmTasks('grunt-resemble-cli');grunt.loadNpmTasks('grunt-contrib-watch');grunt.loadNpmTasks('grunt-contrib-imagemin');grunt.loadNpmTasks('grunt-text-replace');grunt.registerMultiTask('amd', 'Clean up AMD', function () {var s, d;this.files.forEach(function (f) {s = f.src;d = f.dest;});grunt.file.copy(s, d, {process: function (contents) {contents = contents.replace(/\s*if\(\$\.jstree\.plugins\.[a-z]+\)\s*\{\s*return;\s*\}/ig, '');contents = contents.replace(/\/\*globals[^\/]+\//ig, '');//contents = contents.replace(/\(function \(factory[\s\S]*?undefined/mig, '(function ($, undefined');//contents = contents.replace(/\}\)\);/g, '}(jQuery));');contents = contents.replace(/\(function \(factory[\s\S]*?undefined\s*\)[^\n]+/mig, '');contents = contents.replace(/\}\)\);/g, '');contents = contents.replace(/\s*("|')use strict("|');/g, '');contents = contents.replace(/\s*return \$\.fn\.jstree;/g, '');return grunt.file.read('src/intro.js') + contents + grunt.file.read('src/outro.js');}});});grunt.registerMultiTask('dox', 'Generate dox output ', function() {var exec = require('child_process').exec,path = require('path'),done = this.async(),doxPath = path.resolve(__dirname),formatter = [doxPath, 'node_modules', '.bin', 'dox'].join(path.sep);exec(formatter + ' < "dist/jstree.js" > "docs/jstree.json"', {maxBuffer: 5000*1024}, function(error, stout, sterr){if (error) {grunt.log.error(formatter);grunt.log.error("WARN: "+ error);}if (!error) {grunt.log.writeln('dist/jstree.js doxxed.');done();}});});grunt.util.linefeed = "\n";// Default task.grunt.registerTask('default', ['jshint:beforeconcat','concat','amd','jshint:afterconcat','copy:libs','uglify','less','imagemin','replace','copy:docs','qunit','resemble','dox']);grunt.registerTask('js', ['concat','amd','uglify']);grunt.registerTask('css', ['copy','less']);};