PluginProbe
Photonic Gallery & Lightbox for Flickr, SmugMug & Others / 2.32
Photonic Gallery & Lightbox for Flickr, SmugMug & Others v2.32
3.37 3.36 3.35 3.34 3.33 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 2.27 2.28 2.29 2.30 2.31 2.32 2.33 2.34 2.40 2.41 2.42 2.43 All 142 releases
photonic / grunt / Gruntfile.js

Gruntfile.js in Photonic Gallery & Lightbox for Flickr, SmugMug & Others 2.32, at grunt/Gruntfile.js

436 lines 11.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 module.exports = function(grunt) {
2 // Config
3 grunt.initConfig({
4 pkg: grunt.file.readJSON('package.json'),
5 dirs: {
6 src_js: '../include/scripts/front-end/src',
7 src_css: '../include/css/front-end/core',
8 tp: '../include/scripts/third-party',
9 build_jq: '../include/scripts/front-end/jq',
10 dest_js_solo: '../include/scripts/front-end/jq/solo',
11 dest_js_solo_slider: '../include/scripts/front-end/jq/solo-slider',
12 dest_js_combo: '../include/scripts/front-end/jq/combo',
13 dest_js_combo_slider: '../include/scripts/front-end/jq/combo-slider',
14 dest_css_solo_slider: '../include/css/front-end/solo-slider',
15 dest_css_combo: '../include/css/front-end/combo',
16 dest_css_combo_slider: '../include/css/front-end/combo-slider',
17 no_jq_src: '../include/scripts/front-end/src-no-jq',
18 no_jq_dest: '../include/scripts/front-end/build-no-jq',
19 i18n_src: '..',
20 langs: 'languages'
21 },
22
23 vars: { },
24
25 clean: {
26 css: {
27 options: {
28 force: true
29 },
30 src: [
31 '<%= dirs.dest_css_solo_slider %>',
32 '<%= dirs.dest_css_combo %>',
33 '<%= dirs.dest_css_combo_slider %>'
34 ]
35 },
36 js: {
37 options: {
38 force: true
39 },
40 src: [
41 '<%= dirs.dest_js_solo %>',
42 '<%= dirs.dest_js_solo_slider %>',
43 '<%= dirs.dest_js_combo %>',
44 '<%= dirs.dest_js_combo_slider %>'
45 ]
46 }
47 },
48
49 concat: {
50 lb_header: {
51 options: {
52 process: true
53 },
54 src: [
55 '<%= dirs.src_js %>/core/external.js',
56 '<%= dirs.src_js %>/core/jq-start.tmpl',
57 '<%= dirs.src_js %>/core/core.js',
58 '<%= dirs.src_js %>/lightboxes/Lightbox.js'
59 ],
60 dest: '<%= dirs.dest_js_solo %>/lb-start.tmpl'
61 },
62 lb_footer : {
63 options: {
64 process: true
65 },
66 src: [
67 '<%= dirs.src_js %>/core/layouts.js',
68 '<%= dirs.src_js %>/core/jq-end.tmpl'
69 ],
70 dest: '<%= dirs.dest_js_solo %>/lb-end.tmpl'
71 },
72
73 no_jq_lightgallery: {
74 options: {
75 process: true
76 },
77 src: [
78 '<%= dirs.no_jq_src %>/core/util.js',
79 '<%= dirs.no_jq_src %>/core/external.js',
80 '<%= dirs.no_jq_src %>/core/no-jq-start.tmpl',
81 '<%= dirs.no_jq_src %>/core/core.js',
82 '<%= dirs.no_jq_src %>/core/no-jq-end.tmpl'
83 ],
84 dest: '<%= dirs.no_jq_dest %>/photonic-lightgallery.js'
85 }
86 },
87
88 makepot: {
89 target: {
90 options: {
91 type: 'wp-plugin',
92 potFilename: 'photonic.pot',
93 cwd: '<%= dirs.i18n_src %>',
94 domainPath: '<%= dirs.langs %>'
95 }
96 }
97 }
98 });
99
100 // Load plugins
101 var cwd = process.cwd();
102 process.chdir('../../../../..');
103 grunt.loadNpmTasks('grunt-contrib-clean');
104 grunt.loadNpmTasks('grunt-contrib-concat');
105 grunt.loadNpmTasks('grunt-contrib-copy');
106 grunt.loadNpmTasks('grunt-contrib-cssmin');
107 grunt.loadNpmTasks('grunt-contrib-uglify');
108 grunt.loadNpmTasks('grunt-wp-i18n');
109 process.chdir(cwd);
110
111 var lightboxes = [
112 'Colorbox',
113 'Fancybox',
114 'Fancybox2',
115 'Fancybox3',
116 'Featherlight',
117 'ImageLightbox',
118 'Galleria',
119 'Lightcase',
120 'Lightgallery',
121 'Magnific',
122 'none',
123 'PhotoSwipe',
124 'PrettyPhoto',
125 'Strip',
126 'Swipebox',
127 'Thickbox'
128 ];
129 var no_combo = [
130 'Fancybox2',
131 'none',
132 'Strip',
133 'Thickbox'
134 ];
135
136 function buildCSS() {
137 var tasks = [];
138 var coreCSS = [
139 '<%= dirs.src_css %>/photonic.css'
140 ];
141
142 grunt.task.run([
143 'clean:css'
144 ]);
145
146 for (var i = 0; i < lightboxes.length; i++) {
147 var lower = lightboxes[i].toLowerCase();
148 var comboCSS = ['<%= dirs.tp %>/' + lower + '/' + lower + '.css'].concat(coreCSS);
149 var comboSliderCSS = ['<%= dirs.tp %>/lightslider/lightslider.css'].concat(comboCSS);
150 grunt.config(['concat', lower + '_css_combo'], {
151 options: {
152 process: true
153 },
154 separator: '\r\n',
155 src: comboCSS,
156 dest: '<%= dirs.dest_css_combo %>/photonic-' + lower + '.css'
157 });
158 tasks.push('concat:' + lower + '_css_combo');
159
160 grunt.config(['concat', lower + '_css_slider_combo'], {
161 options: {
162 process: true
163 },
164 separator: '\r\n',
165 src: comboSliderCSS,
166 dest: '<%= dirs.dest_css_combo_slider %>/photonic-' + lower + '.css'
167 });
168 tasks.push('concat:' + lower + '_css_slider_combo');
169
170 grunt.config(['copy', lower + '_css_img'], {
171 files: [{
172 expand: true,
173 cwd: '<%= dirs.tp %>/' + lower,
174 src: [
175 lower + '-img/**',
176 lower + '-fonts/**'
177 ],
178 dest: '<%= dirs.dest_css_combo %>/'
179 }]
180 });
181 tasks.push('copy:' + lower + '_css_img');
182
183 grunt.config(['copy', lower + '_css_img_slider'], {
184 files: [{
185 expand: true,
186 cwd: '<%= dirs.tp %>/' + lower,
187 src: [
188 lower + '-img/**',
189 lower + '-fonts/**'
190 ],
191 dest: '<%= dirs.dest_css_combo_slider %>/'
192 }]
193 });
194 tasks.push('copy:' + lower + '_css_img_slider');
195 }
196 grunt.config(['cssmin', 'combo'], {
197 files: [{
198 expand: true,
199 cwd: '<%= dirs.dest_css_combo %>',
200 src: ['*.css', '!*.min.css'],
201 dest: '<%= dirs.dest_css_combo %>/',
202 ext: '.min.css'
203 }]
204 });
205
206 tasks.push('cssmin:combo');
207
208 grunt.config(['cssmin', 'combo_slider'], {
209 files: [{
210 expand: true,
211 cwd: '<%= dirs.dest_css_combo_slider %>',
212 src: ['*.css', '!*.min.css'],
213 dest: '<%= dirs.dest_css_combo_slider %>/',
214 ext: '.min.css'
215 }]
216 });
217 tasks.push('cssmin:combo_slider');
218
219 grunt.config(['copy', 'img_slider'], {
220 files: [{
221 expand: true,
222 cwd: '<%= dirs.tp %>/lightslider',
223 src: [
224 'lightslider-img/**'
225 ],
226 dest: '<%= dirs.dest_css_combo_slider %>/'
227 }]
228 });
229 tasks.push('copy:img_slider');
230
231 grunt.task.run(tasks);
232 }
233
234 function buildJS() {
235 var firstSet = [], secondSet = [];
236 grunt.task.run([
237 'clean:js',
238 'concat:lb_header',
239 'concat:lb_footer'
240 ]);
241
242 for (var i = 0; i < lightboxes.length; i++) {
243 var lower = lightboxes[i].toLowerCase();
244 var core = [
245 '<%= dirs.dest_js_solo %>/lb-start.tmpl',
246 '<%= dirs.src_js %>/lightboxes/Lightbox_' + lightboxes[i] + '.js',
247 '<%= dirs.dest_js_solo %>/lb-end.tmpl'
248 ];
249 var combo = ['<%= dirs.tp %>/' + lower + '/' + lower + '.js'].concat(core);
250 var soloSlider = ['<%= dirs.tp %>/lightslider/lightslider.js'].concat(core);
251 var comboSlider = ['<%= dirs.tp %>/lightslider/lightslider.js'].concat(combo);
252
253 // Scenario 1:
254 // 1. Core, Photonic Lightbox and Layout scripts together, unminified
255 // 2. Third-party lightbox scripts separate
256 // 3. Slider separate
257 grunt.config(['concat', lower], {
258 options: {
259 process: true
260 },
261 separator: '\r\n',
262 src: core,
263 dest: '<%= dirs.dest_js_solo %>/photonic-' + lower + '.js'
264 });
265 firstSet.push('concat:' + lower);
266
267 // Scenario 2:
268 // 1. Core, Photonic Lightbox and Layout scripts together, unminified. Slider combined with this, unminified
269 // 2. Third-party lightbox scripts separate
270 grunt.config(['concat', lower + '_slider'], {
271 options: {
272 process: true
273 },
274 separator: '\r\n',
275 src: soloSlider,
276 dest: '<%= dirs.dest_js_solo_slider %>/photonic-' + lower + '.js'
277 });
278 firstSet.push('concat:' + lower + '_slider');
279
280 if (no_combo.indexOf(lightboxes[i]) < 0) {
281 // Scenario 3a:
282 // 1. Core, Photonic Lightbox and Layout scripts together, unminified, combined with unminified third-party lightbox
283 // 2. Slider separate
284 // This will not work for Lightgallery, which has additional plugins
285 grunt.config(['concat', lower + '_combo'], {
286 options: {
287 process: true
288 },
289 separator: '\r\n',
290 src: combo,
291 dest: '<%= dirs.dest_js_combo %>/photonic-' + lower + '.js'
292 });
293 firstSet.push('concat:' + lower + '_combo');
294
295 // Scenario 4a:
296 // 1. Core, Photonic Lightbox and Layout scripts together, minified, combined with minified third-party lightbox
297 // 2. Slider separate
298 // This will not work for Lightgallery, which has additional plugins
299 grunt.config(['concat', lower + '_combo_min'], {
300 options: {
301 process: true
302 },
303 separator: '\r\n',
304 src: [
305 '<%= dirs.tp %>/' + lower + '/' + lower + '.min.js',
306 '<%= dirs.dest_js_solo %>/photonic-' + lower + '.min.js'
307 ],
308 dest: '<%= dirs.dest_js_combo %>/photonic-' + lower + '.min.js'
309 });
310 secondSet.push('concat:' + lower + '_combo_min');
311
312 // Scenario 5a:
313 // 1. All scripts including third-party lightbox and slider combined, unminified
314 // This will not work for Lightgallery, which has additional plugins
315 grunt.config(['concat', lower + '_combo_slider'], {
316 options: {
317 process: true
318 },
319 separator: '\r\n',
320 src: comboSlider,
321 dest: '<%= dirs.dest_js_combo_slider %>/photonic-' + lower + '.js'
322 });
323 firstSet.push('concat:' + lower + '_combo_slider');
324
325 // Scenario 6a:
326 // 1. All scripts including third-party lightbox and slider combined, minified
327 // This will not work for Lightgallery, which has additional plugins
328 grunt.config(['concat', lower + '_combo_slider_min'], {
329 options: {
330 process: true
331 },
332 separator: '\r\n',
333 src: [
334 '<%= dirs.tp %>/lightslider/lightslider.min.js',
335 '<%= dirs.dest_js_combo %>/photonic-' + lower + '.min.js'
336 ],
337 dest: '<%= dirs.dest_js_combo_slider %>/photonic-' + lower + '.min.js'
338 });
339 secondSet.push('concat:' + lower + '_combo_slider_min');
340
341 grunt.config(['concat', lower + '_combo_css'], {
342 options: {
343 process: true
344 },
345 separator: '\r\n',
346 src: combo,
347 dest: '<%= dirs.dest_js_combo %>/photonic-' + lower + '.js'
348 });
349 firstSet.push('concat:' + lower + '_combo');
350
351 }
352 else {
353 // Scenario 3b:
354 // 1. Similar to 3a, but for scripts where no third-party source is applicable (i.e. Fancybox2, Strip, "none" and Thickbox)
355 // 2. Slider separate
356 grunt.config(['copy', lower + '_combo'], {
357 files: [{
358 expand: true,
359 cwd: '<%= dirs.dest_js_solo %>',
360 src: [
361 'photonic-' + lower + '.js',
362 'photonic-' + lower + '.min.js'
363 ],
364 dest: '<%= dirs.dest_js_combo %>/'
365 }]
366 });
367 secondSet.push('copy:' + lower + '_combo');
368
369 // Scenario 4b:
370 // 1. Similar to 3a, but for scripts where no third-party source is applicable (i.e. Fancybox2, Strip, "none" and Thickbox)
371 // 2. Slider separate
372 grunt.config(['copy', lower + '_combo_slider'], {
373 files: [{
374 expand: true,
375 cwd: '<%= dirs.dest_js_solo_slider %>',
376 src: [
377 'photonic-' + lower + '.js',
378 'photonic-' + lower + '.min.js'
379 ],
380 dest: '<%= dirs.dest_js_combo_slider %>/'
381 }]
382 });
383 secondSet.push('copy:' + lower + '_combo_slider');
384 }
385 }
386
387 grunt.config(['uglify', 'solo'], {
388 files: [{
389 expand: true,
390 cwd: '<%= dirs.dest_js_solo %>',
391 src: ['*.js'],
392 dest: '<%= dirs.dest_js_solo %>/',
393 ext: '.min.js',
394 extDot: 'first'
395 }]
396 });
397 firstSet.push('uglify:solo');
398
399 grunt.config(['uglify', 'solo_slider'], {
400 files: [{
401 expand: true,
402 cwd: '<%= dirs.dest_js_solo_slider %>',
403 src: ['*.js'],
404 dest: '<%= dirs.dest_js_solo_slider %>/',
405 ext: '.min.js',
406 extDot: 'first'
407 }]
408 });
409 firstSet.push('uglify:solo_slider');
410
411 grunt.task.run(firstSet);
412 grunt.task.run(secondSet);
413 }
414
415 function buildPOT() {
416 grunt.task.run([
417 'makepot:target'
418 ]);
419 }
420
421 function buildAll() {
422 buildJS();
423 buildCSS();
424 buildPOT();
425 }
426
427 // Tasks
428 grunt.registerTask('default', [
429 'concat:no_jq_lightgallery'
430 ]);
431
432 grunt.registerTask('build_all', buildAll);
433 grunt.registerTask('build_js', buildJS);
434 grunt.registerTask('build_css', buildCSS);
435 grunt.registerTask('build_pot', buildPOT);
436 };