diff vakata-jstree-3.3.5/gruntfile.js @ 5:aacd5f53ac99 draft

v2.0.0
author mingchen0919
date Wed, 18 Apr 2018 13:17:28 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vakata-jstree-3.3.5/gruntfile.js	Wed Apr 18 13:17:28 2018 -0400
@@ -0,0 +1,241 @@
+/*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']);
+
+};