annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
mingchen0919
parents:
diff changeset
1 /*global module:false, require:false, __dirname:false*/
mingchen0919
parents:
diff changeset
2
mingchen0919
parents:
diff changeset
3 module.exports = function(grunt) {
mingchen0919
parents:
diff changeset
4 grunt.util.linefeed = "\n";
mingchen0919
parents:
diff changeset
5
mingchen0919
parents:
diff changeset
6 // Project configuration.
mingchen0919
parents:
diff changeset
7 grunt.initConfig({
mingchen0919
parents:
diff changeset
8 pkg: grunt.file.readJSON('package.json'),
mingchen0919
parents:
diff changeset
9 concat: {
mingchen0919
parents:
diff changeset
10 options : {
mingchen0919
parents:
diff changeset
11 separator : "\n"
mingchen0919
parents:
diff changeset
12 },
mingchen0919
parents:
diff changeset
13 dist: {
mingchen0919
parents:
diff changeset
14 src: ['src/<%= pkg.name %>.js', 'src/<%= pkg.name %>.*.js', 'src/vakata-jstree.js'],
mingchen0919
parents:
diff changeset
15 dest: 'dist/<%= pkg.name %>.js'
mingchen0919
parents:
diff changeset
16 }
mingchen0919
parents:
diff changeset
17 },
mingchen0919
parents:
diff changeset
18 copy: {
mingchen0919
parents:
diff changeset
19 libs : {
mingchen0919
parents:
diff changeset
20 files : [
mingchen0919
parents:
diff changeset
21 { expand: true, cwd : 'libs/', src: ['*'], dest: 'dist/libs/' }
mingchen0919
parents:
diff changeset
22 ]
mingchen0919
parents:
diff changeset
23 },
mingchen0919
parents:
diff changeset
24 docs : {
mingchen0919
parents:
diff changeset
25 files : [
mingchen0919
parents:
diff changeset
26 { expand: true, cwd : 'dist/', src: ['**/*'], dest: 'docs/assets/dist/' }
mingchen0919
parents:
diff changeset
27 ]
mingchen0919
parents:
diff changeset
28 }
mingchen0919
parents:
diff changeset
29 },
mingchen0919
parents:
diff changeset
30 uglify: {
mingchen0919
parents:
diff changeset
31 options: {
mingchen0919
parents:
diff changeset
32 banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %> - (<%= _.pluck(pkg.licenses, "type").join(", ") %>) */\n',
mingchen0919
parents:
diff changeset
33 preserveComments: false,
mingchen0919
parents:
diff changeset
34 //sourceMap: "dist/jstree.min.map",
mingchen0919
parents:
diff changeset
35 //sourceMappingURL: "jstree.min.map",
mingchen0919
parents:
diff changeset
36 report: "min",
mingchen0919
parents:
diff changeset
37 beautify: {
mingchen0919
parents:
diff changeset
38 ascii_only: true
mingchen0919
parents:
diff changeset
39 },
mingchen0919
parents:
diff changeset
40 compress: {
mingchen0919
parents:
diff changeset
41 hoist_funs: false,
mingchen0919
parents:
diff changeset
42 loops: false,
mingchen0919
parents:
diff changeset
43 unused: false
mingchen0919
parents:
diff changeset
44 }
mingchen0919
parents:
diff changeset
45 },
mingchen0919
parents:
diff changeset
46 dist: {
mingchen0919
parents:
diff changeset
47 src: ['<%= concat.dist.dest %>'],
mingchen0919
parents:
diff changeset
48 dest: 'dist/<%= pkg.name %>.min.js'
mingchen0919
parents:
diff changeset
49 }
mingchen0919
parents:
diff changeset
50 },
mingchen0919
parents:
diff changeset
51 qunit: {
mingchen0919
parents:
diff changeset
52 files: ['test/unit/**/*.html']
mingchen0919
parents:
diff changeset
53 },
mingchen0919
parents:
diff changeset
54 jshint: {
mingchen0919
parents:
diff changeset
55 options: {
mingchen0919
parents:
diff changeset
56 'curly' : true,
mingchen0919
parents:
diff changeset
57 'eqeqeq' : true,
mingchen0919
parents:
diff changeset
58 'latedef' : true,
mingchen0919
parents:
diff changeset
59 'newcap' : true,
mingchen0919
parents:
diff changeset
60 'noarg' : true,
mingchen0919
parents:
diff changeset
61 'sub' : true,
mingchen0919
parents:
diff changeset
62 'undef' : true,
mingchen0919
parents:
diff changeset
63 'boss' : true,
mingchen0919
parents:
diff changeset
64 'eqnull' : true,
mingchen0919
parents:
diff changeset
65 'browser' : true,
mingchen0919
parents:
diff changeset
66 'trailing' : true,
mingchen0919
parents:
diff changeset
67 'globals' : {
mingchen0919
parents:
diff changeset
68 'console' : true,
mingchen0919
parents:
diff changeset
69 'jQuery' : true,
mingchen0919
parents:
diff changeset
70 'browser' : true,
mingchen0919
parents:
diff changeset
71 'XSLTProcessor' : true,
mingchen0919
parents:
diff changeset
72 'ActiveXObject' : true
mingchen0919
parents:
diff changeset
73 }
mingchen0919
parents:
diff changeset
74 },
mingchen0919
parents:
diff changeset
75 beforeconcat: ['src/<%= pkg.name %>.js', 'src/<%= pkg.name %>.*.js'],
mingchen0919
parents:
diff changeset
76 afterconcat: ['dist/<%= pkg.name %>.js']
mingchen0919
parents:
diff changeset
77 },
mingchen0919
parents:
diff changeset
78 dox: {
mingchen0919
parents:
diff changeset
79 files: {
mingchen0919
parents:
diff changeset
80 src: ['src/*.js'],
mingchen0919
parents:
diff changeset
81 dest: 'docs'
mingchen0919
parents:
diff changeset
82 }
mingchen0919
parents:
diff changeset
83 },
mingchen0919
parents:
diff changeset
84 amd : {
mingchen0919
parents:
diff changeset
85 files: {
mingchen0919
parents:
diff changeset
86 src: ['dist/jstree.js'],
mingchen0919
parents:
diff changeset
87 dest: 'dist/jstree.js'
mingchen0919
parents:
diff changeset
88 }
mingchen0919
parents:
diff changeset
89 },
mingchen0919
parents:
diff changeset
90 less: {
mingchen0919
parents:
diff changeset
91 production: {
mingchen0919
parents:
diff changeset
92 options : {
mingchen0919
parents:
diff changeset
93 cleancss : true,
mingchen0919
parents:
diff changeset
94 compress : true
mingchen0919
parents:
diff changeset
95 },
mingchen0919
parents:
diff changeset
96 files: {
mingchen0919
parents:
diff changeset
97 "dist/themes/default/style.min.css" : "src/themes/default/style.less",
mingchen0919
parents:
diff changeset
98 "dist/themes/default-dark/style.min.css" : "src/themes/default-dark/style.less"
mingchen0919
parents:
diff changeset
99 }
mingchen0919
parents:
diff changeset
100 },
mingchen0919
parents:
diff changeset
101 development: {
mingchen0919
parents:
diff changeset
102 files: {
mingchen0919
parents:
diff changeset
103 "src/themes/default/style.css" : "src/themes/default/style.less",
mingchen0919
parents:
diff changeset
104 "dist/themes/default/style.css" : "src/themes/default/style.less",
mingchen0919
parents:
diff changeset
105 "src/themes/default-dark/style.css" : "src/themes/default-dark/style.less",
mingchen0919
parents:
diff changeset
106 "dist/themes/default-dark/style.css" : "src/themes/default-dark/style.less"
mingchen0919
parents:
diff changeset
107 }
mingchen0919
parents:
diff changeset
108 }
mingchen0919
parents:
diff changeset
109 },
mingchen0919
parents:
diff changeset
110 watch: {
mingchen0919
parents:
diff changeset
111 js : {
mingchen0919
parents:
diff changeset
112 files: ['src/**/*.js'],
mingchen0919
parents:
diff changeset
113 tasks: ['js'],
mingchen0919
parents:
diff changeset
114 options : {
mingchen0919
parents:
diff changeset
115 atBegin : true
mingchen0919
parents:
diff changeset
116 }
mingchen0919
parents:
diff changeset
117 },
mingchen0919
parents:
diff changeset
118 css : {
mingchen0919
parents:
diff changeset
119 files: ['src/**/*.less','src/**/*.png','src/**/*.gif'],
mingchen0919
parents:
diff changeset
120 tasks: ['css'],
mingchen0919
parents:
diff changeset
121 options : {
mingchen0919
parents:
diff changeset
122 atBegin : true
mingchen0919
parents:
diff changeset
123 }
mingchen0919
parents:
diff changeset
124 },
mingchen0919
parents:
diff changeset
125 },
mingchen0919
parents:
diff changeset
126 resemble: {
mingchen0919
parents:
diff changeset
127 options: {
mingchen0919
parents:
diff changeset
128 screenshotRoot: 'test/visual/screenshots/',
mingchen0919
parents:
diff changeset
129 url: 'http://127.0.0.1/jstree/test/visual/',
mingchen0919
parents:
diff changeset
130 gm: false
mingchen0919
parents:
diff changeset
131 },
mingchen0919
parents:
diff changeset
132 desktop: {
mingchen0919
parents:
diff changeset
133 options: {
mingchen0919
parents:
diff changeset
134 width: 1280,
mingchen0919
parents:
diff changeset
135 },
mingchen0919
parents:
diff changeset
136 src: ['desktop'],
mingchen0919
parents:
diff changeset
137 dest: 'desktop',
mingchen0919
parents:
diff changeset
138 },
mingchen0919
parents:
diff changeset
139 mobile: {
mingchen0919
parents:
diff changeset
140 options: {
mingchen0919
parents:
diff changeset
141 width: 360,
mingchen0919
parents:
diff changeset
142 },
mingchen0919
parents:
diff changeset
143 src: ['mobile'],
mingchen0919
parents:
diff changeset
144 dest: 'mobile'
mingchen0919
parents:
diff changeset
145 }
mingchen0919
parents:
diff changeset
146 },
mingchen0919
parents:
diff changeset
147 imagemin: {
mingchen0919
parents:
diff changeset
148 dynamic: {
mingchen0919
parents:
diff changeset
149 options: { // Target options
mingchen0919
parents:
diff changeset
150 optimizationLevel: 7,
mingchen0919
parents:
diff changeset
151 pngquant : true
mingchen0919
parents:
diff changeset
152 },
mingchen0919
parents:
diff changeset
153 files: [{
mingchen0919
parents:
diff changeset
154 expand: true, // Enable dynamic expansion
mingchen0919
parents:
diff changeset
155 cwd: 'src/themes/default/', // Src matches are relative to this path
mingchen0919
parents:
diff changeset
156 src: ['**/*.{png,jpg,gif}'], // Actual patterns to match
mingchen0919
parents:
diff changeset
157 dest: 'dist/themes/default/' // Destination path prefix
mingchen0919
parents:
diff changeset
158 },{
mingchen0919
parents:
diff changeset
159 expand: true, // Enable dynamic expansion
mingchen0919
parents:
diff changeset
160 cwd: 'src/themes/default-dark/', // Src matches are relative to this path
mingchen0919
parents:
diff changeset
161 src: ['**/*.{png,jpg,gif}'], // Actual patterns to match
mingchen0919
parents:
diff changeset
162 dest: 'dist/themes/default-dark/' // Destination path prefix
mingchen0919
parents:
diff changeset
163 }]
mingchen0919
parents:
diff changeset
164 }
mingchen0919
parents:
diff changeset
165 },
mingchen0919
parents:
diff changeset
166 replace: {
mingchen0919
parents:
diff changeset
167 files: {
mingchen0919
parents:
diff changeset
168 src: ['dist/*.js', 'bower.json', 'component.json', 'jstree.jquery.json'],
mingchen0919
parents:
diff changeset
169 overwrite: true,
mingchen0919
parents:
diff changeset
170 replacements: [
mingchen0919
parents:
diff changeset
171 {
mingchen0919
parents:
diff changeset
172 from: '{{VERSION}}',
mingchen0919
parents:
diff changeset
173 to: "<%= pkg.version %>"
mingchen0919
parents:
diff changeset
174 },
mingchen0919
parents:
diff changeset
175 {
mingchen0919
parents:
diff changeset
176 from: /"version": "[^"]+"/g,
mingchen0919
parents:
diff changeset
177 to: "\"version\": \"<%= pkg.version %>\""
mingchen0919
parents:
diff changeset
178 },
mingchen0919
parents:
diff changeset
179 ]
mingchen0919
parents:
diff changeset
180 }
mingchen0919
parents:
diff changeset
181 }
mingchen0919
parents:
diff changeset
182 });
mingchen0919
parents:
diff changeset
183
mingchen0919
parents:
diff changeset
184 grunt.loadNpmTasks('grunt-contrib-jshint');
mingchen0919
parents:
diff changeset
185 grunt.loadNpmTasks('grunt-contrib-concat');
mingchen0919
parents:
diff changeset
186 grunt.loadNpmTasks('grunt-contrib-copy');
mingchen0919
parents:
diff changeset
187 grunt.loadNpmTasks('grunt-contrib-uglify');
mingchen0919
parents:
diff changeset
188 grunt.loadNpmTasks('grunt-contrib-less');
mingchen0919
parents:
diff changeset
189 grunt.loadNpmTasks('grunt-contrib-qunit');
mingchen0919
parents:
diff changeset
190 grunt.loadNpmTasks('grunt-resemble-cli');
mingchen0919
parents:
diff changeset
191 grunt.loadNpmTasks('grunt-contrib-watch');
mingchen0919
parents:
diff changeset
192 grunt.loadNpmTasks('grunt-contrib-imagemin');
mingchen0919
parents:
diff changeset
193 grunt.loadNpmTasks('grunt-text-replace');
mingchen0919
parents:
diff changeset
194
mingchen0919
parents:
diff changeset
195 grunt.registerMultiTask('amd', 'Clean up AMD', function () {
mingchen0919
parents:
diff changeset
196 var s, d;
mingchen0919
parents:
diff changeset
197 this.files.forEach(function (f) {
mingchen0919
parents:
diff changeset
198 s = f.src;
mingchen0919
parents:
diff changeset
199 d = f.dest;
mingchen0919
parents:
diff changeset
200 });
mingchen0919
parents:
diff changeset
201 grunt.file.copy(s, d, {
mingchen0919
parents:
diff changeset
202 process: function (contents) {
mingchen0919
parents:
diff changeset
203 contents = contents.replace(/\s*if\(\$\.jstree\.plugins\.[a-z]+\)\s*\{\s*return;\s*\}/ig, '');
mingchen0919
parents:
diff changeset
204 contents = contents.replace(/\/\*globals[^\/]+\//ig, '');
mingchen0919
parents:
diff changeset
205 //contents = contents.replace(/\(function \(factory[\s\S]*?undefined/mig, '(function ($, undefined');
mingchen0919
parents:
diff changeset
206 //contents = contents.replace(/\}\)\);/g, '}(jQuery));');
mingchen0919
parents:
diff changeset
207 contents = contents.replace(/\(function \(factory[\s\S]*?undefined\s*\)[^\n]+/mig, '');
mingchen0919
parents:
diff changeset
208 contents = contents.replace(/\}\)\);/g, '');
mingchen0919
parents:
diff changeset
209 contents = contents.replace(/\s*("|')use strict("|');/g, '');
mingchen0919
parents:
diff changeset
210 contents = contents.replace(/\s*return \$\.fn\.jstree;/g, '');
mingchen0919
parents:
diff changeset
211 return grunt.file.read('src/intro.js') + contents + grunt.file.read('src/outro.js');
mingchen0919
parents:
diff changeset
212 }
mingchen0919
parents:
diff changeset
213 });
mingchen0919
parents:
diff changeset
214 });
mingchen0919
parents:
diff changeset
215
mingchen0919
parents:
diff changeset
216 grunt.registerMultiTask('dox', 'Generate dox output ', function() {
mingchen0919
parents:
diff changeset
217 var exec = require('child_process').exec,
mingchen0919
parents:
diff changeset
218 path = require('path'),
mingchen0919
parents:
diff changeset
219 done = this.async(),
mingchen0919
parents:
diff changeset
220 doxPath = path.resolve(__dirname),
mingchen0919
parents:
diff changeset
221 formatter = [doxPath, 'node_modules', '.bin', 'dox'].join(path.sep);
mingchen0919
parents:
diff changeset
222 exec(formatter + ' < "dist/jstree.js" > "docs/jstree.json"', {maxBuffer: 5000*1024}, function(error, stout, sterr){
mingchen0919
parents:
diff changeset
223 if (error) {
mingchen0919
parents:
diff changeset
224 grunt.log.error(formatter);
mingchen0919
parents:
diff changeset
225 grunt.log.error("WARN: "+ error);
mingchen0919
parents:
diff changeset
226 }
mingchen0919
parents:
diff changeset
227 if (!error) {
mingchen0919
parents:
diff changeset
228 grunt.log.writeln('dist/jstree.js doxxed.');
mingchen0919
parents:
diff changeset
229 done();
mingchen0919
parents:
diff changeset
230 }
mingchen0919
parents:
diff changeset
231 });
mingchen0919
parents:
diff changeset
232 });
mingchen0919
parents:
diff changeset
233
mingchen0919
parents:
diff changeset
234 grunt.util.linefeed = "\n";
mingchen0919
parents:
diff changeset
235
mingchen0919
parents:
diff changeset
236 // Default task.
mingchen0919
parents:
diff changeset
237 grunt.registerTask('default', ['jshint:beforeconcat','concat','amd','jshint:afterconcat','copy:libs','uglify','less','imagemin','replace','copy:docs','qunit','resemble','dox']);
mingchen0919
parents:
diff changeset
238 grunt.registerTask('js', ['concat','amd','uglify']);
mingchen0919
parents:
diff changeset
239 grunt.registerTask('css', ['copy','less']);
mingchen0919
parents:
diff changeset
240
mingchen0919
parents:
diff changeset
241 };