PluginProbe
Photonic Gallery & Lightbox for Flickr, SmugMug & Others / 2.41
Photonic Gallery & Lightbox for Flickr, SmugMug & Others v2.41
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.41, at grunt/Gruntfile.js

435 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 'Lightcase',
119 'Lightgallery',
120 'Magnific',
121 'none',
122 'PhotoSwipe',
123 'PrettyPhoto',
124 'Strip',
125 'Swipebox',
126 'Thickbox'
127 ];
128 var no_combo = [
129 'Fancybox2',
130 'none',
131 'Strip',
132 'Thickbox'
133 ];
134
135 function buildCSS() {
136 var tasks = [];
137 var coreCSS = [
138 '<%= dirs.src_css %>/photonic.css'
139 ];
140
141 grunt.task.run([
142 'clean:css'
143 ]);
144
145 for (var i = 0; i < lightboxes.length; i++) {
146 var lower = lightboxes[i].toLowerCase();
147 var comboCSS = ['<%= dirs.tp %>/' + lower + '/' + lower + '.css'].concat(coreCSS);
148 var comboSliderCSS = ['<%= dirs.tp %>/lightslider/lightslider.css'].concat(comboCSS);
149 grunt.config(['concat', lower + '_css_combo'], {
150 options: {
151 process: true
152 },
153 separator: '\r\n',
154 src: comboCSS,
155 dest: '<%= dirs.dest_css_combo %>/photonic-' + lower + '.css'
156 });
157 tasks.push('concat:' + lower + '_css_combo');
158
159 grunt.config(['concat', lower + '_css_slider_combo'], {
160 options: {
161 process: true
162 },
163 separator: '\r\n',
164 src: comboSliderCSS,
165 dest: '<%= dirs.dest_css_combo_slider %>/photonic-' + lower + '.css'
166 });
167 tasks.push('concat:' + lower + '_css_slider_combo');
168
169 grunt.config(['copy', lower + '_css_img'], {
170 files: [{
171 expand: true,
172 cwd: '<%= dirs.tp %>/' + lower,
173 src: [
174 lower + '-img/**',
175 lower + '-fonts/**'
176 ],
177 dest: '<%= dirs.dest_css_combo %>/'
178 }]
179 });
180 tasks.push('copy:' + lower + '_css_img');
181
182 grunt.config(['copy', lower + '_css_img_slider'], {
183 files: [{
184 expand: true,
185 cwd: '<%= dirs.tp %>/' + lower,
186 src: [
187 lower + '-img/**',
188 lower + '-fonts/**'
189 ],
190 dest: '<%= dirs.dest_css_combo_slider %>/'
191 }]
192 });
193 tasks.push('copy:' + lower + '_css_img_slider');
194 }
195 grunt.config(['cssmin', 'combo'], {
196 files: [{
197 expand: true,
198 cwd: '<%= dirs.dest_css_combo %>',
199 src: ['*.css', '!*.min.css'],
200 dest: '<%= dirs.dest_css_combo %>/',
201 ext: '.min.css'
202 }]
203 });
204
205 tasks.push('cssmin:combo');
206
207 grunt.config(['cssmin', 'combo_slider'], {
208 files: [{
209 expand: true,
210 cwd: '<%= dirs.dest_css_combo_slider %>',
211 src: ['*.css', '!*.min.css'],
212 dest: '<%= dirs.dest_css_combo_slider %>/',
213 ext: '.min.css'
214 }]
215 });
216 tasks.push('cssmin:combo_slider');
217
218 grunt.config(['copy', 'img_slider'], {
219 files: [{
220 expand: true,
221 cwd: '<%= dirs.tp %>/lightslider',
222 src: [
223 'lightslider-img/**'
224 ],
225 dest: '<%= dirs.dest_css_combo_slider %>/'
226 }]
227 });
228 tasks.push('copy:img_slider');
229
230 grunt.task.run(tasks);
231 }
232
233 function buildJS() {
234 var firstSet = [], secondSet = [];
235 grunt.task.run([
236 'clean:js',
237 'concat:lb_header',
238 'concat:lb_footer'
239 ]);
240
241 for (var i = 0; i < lightboxes.length; i++) {
242 var lower = lightboxes[i].toLowerCase();
243 var core = [
244 '<%= dirs.dest_js_solo %>/lb-start.tmpl',
245 '<%= dirs.src_js %>/lightboxes/Lightbox_' + lightboxes[i] + '.js',
246 '<%= dirs.dest_js_solo %>/lb-end.tmpl'
247 ];
248 var combo = ['<%= dirs.tp %>/' + lower + '/' + lower + '.js'].concat(core);
249 var soloSlider = ['<%= dirs.tp %>/lightslider/lightslider.js'].concat(core);
250 var comboSlider = ['<%= dirs.tp %>/lightslider/lightslider.js'].concat(combo);
251
252 // Scenario 1:
253 // 1. Core, Photonic Lightbox and Layout scripts together, unminified
254 // 2. Third-party lightbox scripts separate
255 // 3. Slider separate
256 grunt.config(['concat', lower], {
257 options: {
258 process: true
259 },
260 separator: '\r\n',
261 src: core,
262 dest: '<%= dirs.dest_js_solo %>/photonic-' + lower + '.js'
263 });
264 firstSet.push('concat:' + lower);
265
266 // Scenario 2:
267 // 1. Core, Photonic Lightbox and Layout scripts together, unminified. Slider combined with this, unminified
268 // 2. Third-party lightbox scripts separate
269 grunt.config(['concat', lower + '_slider'], {
270 options: {
271 process: true
272 },
273 separator: '\r\n',
274 src: soloSlider,
275 dest: '<%= dirs.dest_js_solo_slider %>/photonic-' + lower + '.js'
276 });
277 firstSet.push('concat:' + lower + '_slider');
278
279 if (no_combo.indexOf(lightboxes[i]) < 0) {
280 // Scenario 3a:
281 // 1. Core, Photonic Lightbox and Layout scripts together, unminified, combined with unminified third-party lightbox
282 // 2. Slider separate
283 // This will not work for Lightgallery, which has additional plugins
284 grunt.config(['concat', lower + '_combo'], {
285 options: {
286 process: true
287 },
288 separator: '\r\n',
289 src: combo,
290 dest: '<%= dirs.dest_js_combo %>/photonic-' + lower + '.js'
291 });
292 firstSet.push('concat:' + lower + '_combo');
293
294 // Scenario 4a:
295 // 1. Core, Photonic Lightbox and Layout scripts together, minified, combined with minified third-party lightbox
296 // 2. Slider separate
297 // This will not work for Lightgallery, which has additional plugins
298 grunt.config(['concat', lower + '_combo_min'], {
299 options: {
300 process: true
301 },
302 separator: '\r\n',
303 src: [
304 '<%= dirs.tp %>/' + lower + '/' + lower + '.min.js',
305 '<%= dirs.dest_js_solo %>/photonic-' + lower + '.min.js'
306 ],
307 dest: '<%= dirs.dest_js_combo %>/photonic-' + lower + '.min.js'
308 });
309 secondSet.push('concat:' + lower + '_combo_min');
310
311 // Scenario 5a:
312 // 1. All scripts including third-party lightbox and slider combined, unminified
313 // This will not work for Lightgallery, which has additional plugins
314 grunt.config(['concat', lower + '_combo_slider'], {
315 options: {
316 process: true
317 },
318 separator: '\r\n',
319 src: comboSlider,
320 dest: '<%= dirs.dest_js_combo_slider %>/photonic-' + lower + '.js'
321 });
322 firstSet.push('concat:' + lower + '_combo_slider');
323
324 // Scenario 6a:
325 // 1. All scripts including third-party lightbox and slider combined, minified
326 // This will not work for Lightgallery, which has additional plugins
327 grunt.config(['concat', lower + '_combo_slider_min'], {
328 options: {
329 process: true
330 },
331 separator: '\r\n',
332 src: [
333 '<%= dirs.tp %>/lightslider/lightslider.min.js',
334 '<%= dirs.dest_js_combo %>/photonic-' + lower + '.min.js'
335 ],
336 dest: '<%= dirs.dest_js_combo_slider %>/photonic-' + lower + '.min.js'
337 });
338 secondSet.push('concat:' + lower + '_combo_slider_min');
339
340 grunt.config(['concat', lower + '_combo_css'], {
341 options: {
342 process: true
343 },
344 separator: '\r\n',
345 src: combo,
346 dest: '<%= dirs.dest_js_combo %>/photonic-' + lower + '.js'
347 });
348 firstSet.push('concat:' + lower + '_combo');
349
350 }
351 else {
352 // Scenario 3b:
353 // 1. Similar to 3a, but for scripts where no third-party source is applicable (i.e. Fancybox2, Strip, "none" and Thickbox)
354 // 2. Slider separate
355 grunt.config(['copy', lower + '_combo'], {
356 files: [{
357 expand: true,
358 cwd: '<%= dirs.dest_js_solo %>',
359 src: [
360 'photonic-' + lower + '.js',
361 'photonic-' + lower + '.min.js'
362 ],
363 dest: '<%= dirs.dest_js_combo %>/'
364 }]
365 });
366 secondSet.push('copy:' + lower + '_combo');
367
368 // Scenario 4b:
369 // 1. Similar to 3a, but for scripts where no third-party source is applicable (i.e. Fancybox2, Strip, "none" and Thickbox)
370 // 2. Slider separate
371 grunt.config(['copy', lower + '_combo_slider'], {
372 files: [{
373 expand: true,
374 cwd: '<%= dirs.dest_js_solo_slider %>',
375 src: [
376 'photonic-' + lower + '.js',
377 'photonic-' + lower + '.min.js'
378 ],
379 dest: '<%= dirs.dest_js_combo_slider %>/'
380 }]
381 });
382 secondSet.push('copy:' + lower + '_combo_slider');
383 }
384 }
385
386 grunt.config(['uglify', 'solo'], {
387 files: [{
388 expand: true,
389 cwd: '<%= dirs.dest_js_solo %>',
390 src: ['*.js'],
391 dest: '<%= dirs.dest_js_solo %>/',
392 ext: '.min.js',
393 extDot: 'first'
394 }]
395 });
396 firstSet.push('uglify:solo');
397
398 grunt.config(['uglify', 'solo_slider'], {
399 files: [{
400 expand: true,
401 cwd: '<%= dirs.dest_js_solo_slider %>',
402 src: ['*.js'],
403 dest: '<%= dirs.dest_js_solo_slider %>/',
404 ext: '.min.js',
405 extDot: 'first'
406 }]
407 });
408 firstSet.push('uglify:solo_slider');
409
410 grunt.task.run(firstSet);
411 grunt.task.run(secondSet);
412 }
413
414 function buildPOT() {
415 grunt.task.run([
416 'makepot:target'
417 ]);
418 }
419
420 function buildAll() {
421 buildJS();
422 buildCSS();
423 buildPOT();
424 }
425
426 // Tasks
427 grunt.registerTask('default', [
428 'concat:no_jq_lightgallery'
429 ]);
430
431 grunt.registerTask('build_all', buildAll);
432 grunt.registerTask('build_js', buildJS);
433 grunt.registerTask('build_css', buildCSS);
434 grunt.registerTask('build_pot', buildPOT);
435 };