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 -333 2.43 → 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,24 +64,27 @@
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 88 'Lightcase',
119 89 'Lightgallery',
120 90 'Magnific',
@@ -120,298 +90,35 @@
120 90 'Magnific',
121 91 'none',
122 92 'PhotoSwipe',
123 93 'PrettyPhoto',
94 + 'Spotlight',
124 95 'Strip',
125 96 'Swipebox',
126 - 'Thickbox'
97 + 'Thickbox',
98 + 'VenoBox',
127 99 ];
128 - var no_combo = [
129 - 'Fancybox2',
130 - 'none',
131 - 'Strip',
132 - 'Thickbox'
133 - ];
134 100
135 101 function buildCSS() {
136 - var tasks = [];
137 - var coreCSS = [
138 - '<%= dirs.src_css %>/photonic.css'
139 - ];
140 -
102 + const tasks = [];
141 103 grunt.task.run([
142 104 'clean:css'
143 105 ]);
144 106
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'], {
107 + grunt.config(['cssmin', 'core'], {
196 108 files: [{
197 109 expand: true,
198 - cwd: '<%= dirs.dest_css_combo %>',
110 + cwd: '<%= dirs.src_css %>',
199 111 src: ['*.css', '!*.min.css'],
200 - dest: '<%= dirs.dest_css_combo %>/',
112 + dest: '<%= dirs.src_css %>/',
201 113 ext: '.min.css'
202 114 }]
203 115 });
116 + tasks.push('cssmin:core');
204 117
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 118 grunt.task.run(tasks);
231 119 }
232 120
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 121 function buildPOT() {
415 122 grunt.task.run([
416 123 'makepot:target'
417 124 ]);
@@ -422,14 +129,18 @@
422 129 buildCSS();
423 130 buildPOT();
424 131 }
425 132
426 - // Tasks
427 - grunt.registerTask('default', [
428 - 'concat:no_jq_lightgallery'
429 - ]);
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 + }
430 141
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 -};
142 + grunt.registerTask('buildAll', buildAll);
143 + grunt.registerTask('buildCSS', buildCSS);
144 + grunt.registerTask('buildPOT', buildPOT);
145 + grunt.registerTask('buildJS', buildJS);
146 +};