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