PluginProbe
Photonic Gallery & Lightbox for Flickr, SmugMug & Others / 3.37
Photonic Gallery & Lightbox for Flickr, SmugMug & Others v3.37
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
← All changes | grunt/Gruntfile.js +44 -334 2.28 → 3.37 View file →
@@ -1,22 +1,19 @@
1 +const webpackConfig = require('./webpack.config.js');
2 +
1 3 module.exports = function(grunt) {
2 4 // Config
3 5 grunt.initConfig({
4 6 pkg: grunt.file.readJSON('package.json'),
5 7 dirs: {
6 - src_js: '../include/scripts/front-end/src',
7 8 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',
9 + tp: '../include/ext',
10 +
11 + dest_js_base: '../include/js/front-end',
12 +
15 13 dest_css_combo: '../include/css/front-end/combo',
16 14 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',
15 +
19 16 i18n_src: '..',
20 17 langs: 'languages'
21 18 },
22 19
@@ -21,8 +18,12 @@
21 18 },
22 19
23 20 vars: { },
24 21
22 + webpack: {
23 + myConfig: webpackConfig,
24 + },
25 +
25 26 clean: {
26 27 css: {
27 28 options: {
28 29 force: true
@@ -27,9 +28,8 @@
27 28 options: {
28 29 force: true
29 30 },
30 31 src: [
31 - '<%= dirs.dest_css_solo_slider %>',
32 32 '<%= dirs.dest_css_combo %>',
33 33 '<%= dirs.dest_css_combo_slider %>'
34 34 ]
35 35 },
@@ -37,53 +37,20 @@
37 37 options: {
38 38 force: true
39 39 },
40 40 src: [
41 - '<%= dirs.dest_js_solo %>',
42 - '<%= dirs.dest_js_solo_slider %>',
43 - '<%= dirs.dest_js_combo %>',
44 - '<%= dirs.dest_js_combo_slider %>'
41 + '<%= dirs.dest_js_base %>/out/**/*.*',
45 42 ]
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 43 },
62 - lb_footer : {
44 + jsLicenses: {
63 45 options: {
64 - process: true
46 + force: true
65 47 },
66 48 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'
49 + '<%= dirs.dest_js_base %>/module/**/*.txt',
50 + '<%= dirs.dest_js_base %>/nomodule/**/*.txt',
51 + ]
71 52 },
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 53 },
87 54
88 55 makepot: {
89 56 target: {
@@ -97,26 +64,28 @@
97 64 }
98 65 });
99 66
100 67 // Load plugins
101 - var cwd = process.cwd();
68 + const cwd = process.cwd();
102 69 process.chdir('../../../../..');
70 + grunt.loadNpmTasks('grunt-webpack');
103 71 grunt.loadNpmTasks('grunt-contrib-clean');
104 72 grunt.loadNpmTasks('grunt-contrib-concat');
105 73 grunt.loadNpmTasks('grunt-contrib-copy');
106 74 grunt.loadNpmTasks('grunt-contrib-cssmin');
107 - grunt.loadNpmTasks('grunt-contrib-uglify');
108 75 grunt.loadNpmTasks('grunt-wp-i18n');
109 76 process.chdir(cwd);
110 77
111 - var lightboxes = [
78 + const lightboxes = [
79 + 'BaguetteBox',
80 + 'BigPicture',
112 81 'Colorbox',
113 82 'Fancybox',
114 83 'Fancybox2',
115 84 'Fancybox3',
116 85 'Featherlight',
86 + 'GLightbox',
117 87 'ImageLightbox',
118 - 'Galleria',
119 88 'Lightcase',
120 89 'Lightgallery',
121 90 'Magnific',
122 91 'none',
@@ -121,298 +90,35 @@
121 90 'Magnific',
122 91 'none',
123 92 'PhotoSwipe',
124 93 'PrettyPhoto',
94 + 'Spotlight',
125 95 'Strip',
126 96 'Swipebox',
127 - 'Thickbox'
97 + 'Thickbox',
98 + 'VenoBox',
128 99 ];
129 - var no_combo = [
130 - 'Fancybox2',
131 - 'none',
132 - 'Strip',
133 - 'Thickbox'
134 - ];
135 100
136 101 function buildCSS() {
137 - var tasks = [];
138 - var coreCSS = [
139 - '<%= dirs.src_css %>/photonic.css'
140 - ];
141 -
102 + const tasks = [];
142 103 grunt.task.run([
143 104 'clean:css'
144 105 ]);
145 106
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'], {
107 + grunt.config(['cssmin', 'core'], {
197 108 files: [{
198 109 expand: true,
199 - cwd: '<%= dirs.dest_css_combo %>',
110 + cwd: '<%= dirs.src_css %>',
200 111 src: ['*.css', '!*.min.css'],
201 - dest: '<%= dirs.dest_css_combo %>/',
112 + dest: '<%= dirs.src_css %>/',
202 113 ext: '.min.css'
203 114 }]
204 115 });
116 + tasks.push('cssmin:core');
205 117
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 118 grunt.task.run(tasks);
232 119 }
233 120
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 121 function buildPOT() {
416 122 grunt.task.run([
417 123 'makepot:target'
418 124 ]);
@@ -423,14 +129,18 @@
423 129 buildCSS();
424 130 buildPOT();
425 131 }
426 132
427 - // Tasks
428 - grunt.registerTask('default', [
429 - 'concat:no_jq_lightgallery'
430 - ]);
133 + function buildJS() {
134 + // First run WebPack to generate the files. This generates 2 files per library - one minified and the other unminified.
135 + grunt.task.run([
136 + 'clean:js',
137 + 'webpack',
138 + 'clean:jsLicenses',
139 + ]);
140 + }
431 141
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 -};
142 + grunt.registerTask('buildAll', buildAll);
143 + grunt.registerTask('buildCSS', buildCSS);
144 + grunt.registerTask('buildPOT', buildPOT);
145 + grunt.registerTask('buildJS', buildJS);
146 +};