Mercurial > repos > mingchen0919 > aurora_htseq
view vakata-jstree-3.3.5/gruntfile.js @ 6:afa1774dc49b draft default tip
planemo upload commit 841d8b22bf9f1aaed6bfe8344b60617f45b275b2-dirty
author | mingchen0919 |
---|---|
date | Sun, 30 Dec 2018 10:26:31 -0500 |
parents | 803f4888f36a |
children |
line wrap: on
line source
/*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 options optimizationLevel: 7, pngquant : true }, files: [{ expand: true, // Enable dynamic expansion cwd: 'src/themes/default/', // Src matches are relative to this path src: ['**/*.{png,jpg,gif}'], // Actual patterns to match dest: 'dist/themes/default/' // Destination path prefix },{ expand: true, // Enable dynamic expansion cwd: 'src/themes/default-dark/', // Src matches are relative to this path src: ['**/*.{png,jpg,gif}'], // Actual patterns to match dest: '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']); };