stop14-themesystem-legacy 2.0.8 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stop14-themesystem-legacy",
3
- "version": "2.0.8",
3
+ "version": "2.1.0",
4
4
  "description": "A scaffolding and build system for theme development across platforms. Legacy version",
5
5
  "author": {
6
6
  "name": "Bill Kennedy",
@@ -35,6 +35,8 @@ de_emphasized: neutral(50)
35
35
  de_activated: neutral(30)
36
36
  link_colour: $black
37
37
  link_colour_active: $clr3
38
+ link_colour_reversed: $white
39
+ link_colour_active_reversed: $white
38
40
 
39
41
  ## 02 LAYOUT
40
42
  rootsize: 100%
@@ -35,6 +35,8 @@ de_emphasized: neutral(50)
35
35
  de_activated: neutral(30)
36
36
  link_colour: $black
37
37
  link_colour_active: $clr3
38
+ link_colour_reversed: $white
39
+ link_colour_active_reversed: neutral(5)
38
40
 
39
41
  ## 02 LAYOUT
40
42
  rootsize: 100%
File without changes
@@ -1,9 +1,67 @@
1
+ /**
2
+ * Gulp Packages
3
+ */
4
+
5
+ /*
6
+ * Key Commands.
7
+ * Alternative config file
8
+ * gulp build --config ./alt-config/configfile.yml
9
+ *
10
+ * Alternative source folder
11
+ * gulp build --source ./alt-source-folder
12
+ *
13
+ * Alternative source image folder
14
+ * gulp build --sourceimgs ./alt-img-folder
15
+ *
16
+ * Alternative asset (destination) folder
17
+ * gulp build --dest ./asset-sitename
18
+ *
19
+ * Alternative source and dest
20
+ * gulp build --source ./source-sitename -dest ./asset-sitename
21
+ */
22
+
23
+ // General
24
+ var {gulp, src, dest, watch, series, parallel, task} = require('gulp');
25
+ var del = require('del');
26
+ var flatmap = require('gulp-flatmap');
27
+ var lazypipe = require('lazypipe');
28
+ var rename = require('gulp-rename');
29
+ var header = require('gulp-header');
30
+ var package = require('./package.json');
31
+ var exec = require('gulp-exec');
32
+ var fs = require('fs');
33
+ var path = require('path');
34
+ var argv = require('yargs').argv; // Must be version 16, as 17 is ES-only.
35
+
36
+ // Scripts
37
+ var eslint = require('gulp-eslint');
38
+ var concat = require('gulp-concat');
39
+ var uglify = require('gulp-terser');
40
+ var modernizr = require('gulp-modernizr');
41
+
42
+ // Styles
43
+ var sass = require('gulp-dart-sass');
44
+ var sourcemaps = require("gulp-sourcemaps");
45
+ var postcss = require('gulp-postcss');
46
+ var autoprefixer = require('autoprefixer');
47
+ var cssnano = require('cssnano');
48
+
49
+ // PNG
50
+
51
+ var imagemin = require('gulp-imagemin');
52
+ imagemin.optipng({optimizationLevel: 7});
53
+
54
+ // SVGs
55
+ var svgmin = require('gulp-svgmin');
56
+
57
+ // BrowserSync
58
+ var browserSync = require('browser-sync');
59
+
1
60
  /**
2
61
  * Settings
3
62
  * Turn on/off build features
4
63
  */
5
64
 
6
-
7
65
  var settings = {
8
66
  clean: true,
9
67
  coreScripts: true,
@@ -20,65 +78,81 @@ var settings = {
20
78
  };
21
79
 
22
80
 
81
+
23
82
  /**
24
83
  * Paths to project folders
25
84
  */
26
85
 
27
- var package_dir = "./node_modules/stop14-themesystem-legacy/source";
28
- var source_dir = './source';
29
- var build_dir = './assets';
30
-
31
- var paths = {
32
- input: source_dir,
33
- output: build_dir,
34
- scripts: {
35
- core: package_dir + '/js',
36
- input: source_dir + '/js',
37
- output: build_dir + '/js/',
38
- coreFilename: 'core',
39
- cfilename: 'default', // Output file name for concatenated scripts. Set to false to use output folder name
40
- vfilename: 'vendor' // Output file name for vendor scripts
41
- },
42
- styles: {
43
- input: source_dir + '/sass/**/*.{scss,sass}',
44
- output: build_dir + '/css',
45
- vfilename: 'vendor', // Output file name for vendor styles
46
- sassIncludePaths: [package_dir + '/sass/a_components',package_dir + '/sass/b_profiles',source_dir + '/sass',package_dir + '/sass/a_components/00_general',package_dir + '/sass/a_components/10_colours_and_patterns', package_dir + '/sass/a_components/20_layout',package_dir + '/sass/a_components/30_typography',package_dir + '/sass/a_components/40_ui',package_dir + '/sass/a_components/50_animation',package_dir + '/sass/a_components/60_site_elements','node_modules']
47
- },
48
- img: {
49
- input: source_dir + '/img/**/*',
50
- output: build_dir + '/img'
51
- },
52
- svgs: {
53
- input: source_dir + '/img/svg/**/*.svg',
54
- output: build_dir + '/img/svg/',
55
- },
56
- pngs: {
57
- input: source_dir + '/img/png/**/*.png',
58
- output: build_dir + '/img/png/',
59
- },
60
- jpgs: {
61
- input: source_dir + '/img/jpg/**/*.jpg',
62
- output: build_dir + '/img/jpg/',
63
- },
64
- fonts: {
65
- input: source_dir + '/fonts/**/*',
66
- output: build_dir + '/fonts',
67
- },
68
- copy: {
69
- input: source_dir + '/copy/**/*',
70
- output: build_dir
71
- },
72
- reload: './'
73
- };
74
-
75
86
 
87
+ var package_dir = "./node_modules/stop14-themesystem-legacy/source";
88
+ var asset_basename = 'assets';
89
+ var alt_config_filename = typeof argv.config !== "undefined" ? argv.config : null;
90
+ var source_dir = typeof argv.source !== "undefined" ? argv.source : './source';
91
+ var build_dir = typeof argv.dest !== "undefined" ? argv.dest : './' + asset_basename;
92
+ var source_image_dir = typeof argv.sourceimgs !== "undefined" ? './' + argv.sourceimgs : null;
93
+ var alt_config_dir = './alt-config';
94
+ const ymlFilePattern = /([^.]*).yml/i;
95
+
96
+
97
+ console.log(argv.sourceimgs);
98
+
99
+ var paths = getPaths(source_dir,build_dir);
100
+
101
+
102
+ function getPaths(source_dir,build_dir) {
103
+ return {
104
+ input: source_dir,
105
+ output: build_dir,
106
+ scripts: {
107
+ core: package_dir + '/js',
108
+ input: source_dir + '/js',
109
+ output: build_dir + '/js/',
110
+ coreFilename: 'core',
111
+ cfilename: 'default', // Output file name for concatenated scripts. Set to false to use output folder name
112
+ vfilename: 'vendor' // Output file name for vendor scripts
113
+ },
114
+ styles: {
115
+ config: '_00_main_configuration.yml', // Main SASS config file
116
+ tempconfig: '_00_temp_configuration.yml', // Location of temporary styles
117
+ altconfig: alt_config_filename, // Alternative config file for generating alternative asset sets
118
+ input: source_dir + '/sass/**/*.{scss,sass}',
119
+ output: build_dir + '/css',
120
+ vfilename: 'vendor', // Output file name for vendor styles
121
+ sassIncludePaths: [package_dir + '/sass/a_components',package_dir + '/sass/b_profiles',source_dir + '/sass',package_dir + '/sass/a_components/00_general',package_dir + '/sass/a_components/10_colours_and_patterns', package_dir + '/sass/a_components/20_layout',package_dir + '/sass/a_components/30_typography',package_dir + '/sass/a_components/40_ui',package_dir + '/sass/a_components/50_animation',package_dir + '/sass/a_components/60_site_elements','node_modules']
122
+ },
123
+ img: {
124
+ input: source_image_dir ? source_image_dir + '/**/*' : source_dir + '/img/**/*',
125
+ output: build_dir + '/img'
126
+ },
127
+ svgs: {
128
+ input: source_image_dir ? source_image_dir + '/svg/**/*.svg' : source_dir + '/img/svg/**/*.svg',
129
+ output: build_dir + '/img/svg/',
130
+ },
131
+ pngs: {
132
+ input: source_image_dir ? source_image_dir + '/png/**/*.png' : source_dir + '/img/png/**/*.png',
133
+ output: build_dir + '/img/png/',
134
+ },
135
+ jpgs: {
136
+ input: source_image_dir ? source_image_dir + '/jpg/**/*.jpg' : source_dir + '/img/jpg/**/*.jpg',
137
+ output: build_dir + '/img/jpg/',
138
+ },
139
+ fonts: {
140
+ input: source_dir + '/fonts/**/*',
141
+ output: build_dir + '/fonts',
142
+ },
143
+ copy: {
144
+ input: source_dir + '/copy/**/*',
145
+ output: build_dir
146
+ },
147
+ reload: './'
148
+ };
149
+ }
76
150
  /**
77
151
  * Copy third-party scripts and styles.
78
152
  */
79
153
 
80
- var vendor_scripts = ['node_modules/ev-emitter/ev-emitter.js','node_modules/imagesloaded/imagesloaded.js','node_modules/jquery-reflow-table/dist/js/reflow-table.js','node_modules/in-view/dist/in-view.min.js','node_modules/select2/dist/js/select2.min.js'];
81
- var vendor_styles = ['node_modules/jquery-reflow-table/dist/css/reflow-table.css','node_modules/select2/dist/css/select2.min.css'];
154
+ var vendor_scripts = ['node_modules/superfish/dist/js/hoverIntent.js','node_modules/superfish/dist/js/superfish.js','node_modules/ev-emitter/ev-emitter.js','node_modules/imagesloaded/imagesloaded.js','node_modules/jquery-reflow-table/dist/js/reflow-table.js','node_modules/in-view/dist/in-view.min.js','node_modules/select2/dist/js/select2.min.js', 'node_modules/masonry-layout/dist/masonry.pkgd.js'];
155
+ var vendor_styles = ['node_modules/superfish/dist/css/superfish.css','node_modules/jquery-reflow-table/dist/css/reflow-table.css','node_modules/select2/dist/css/select2.min.css'];
82
156
 
83
157
 
84
158
  /**
@@ -135,45 +209,6 @@ if (typeof package === "undefined") {
135
209
  };
136
210
  }
137
211
 
138
-
139
- /**
140
- * Gulp Packages
141
- */
142
-
143
- // General
144
- var {gulp, src, dest, watch, series, parallel} = require('gulp');
145
- var del = require('del');
146
- var flatmap = require('gulp-flatmap');
147
- var lazypipe = require('lazypipe');
148
- var rename = require('gulp-rename');
149
- var header = require('gulp-header');
150
- var package = require('./package.json');
151
- var exec = require('gulp-exec');
152
-
153
- // Scripts
154
- var eslint = require('gulp-eslint');
155
- var concat = require('gulp-concat');
156
- var uglify = require('gulp-terser');
157
- var modernizr = require('gulp-modernizr');
158
-
159
- // Styles
160
- var sass = require('gulp-dart-sass');
161
- var sourcemaps = require("gulp-sourcemaps");
162
- var postcss = require('gulp-postcss');
163
- var autoprefixer = require('autoprefixer');
164
- var cssnano = require('cssnano');
165
-
166
- // PNG
167
-
168
- var imagemin = require('gulp-imagemin');
169
- imagemin.optipng({optimizationLevel: 7});
170
-
171
- // SVGs
172
- var svgmin = require('gulp-svgmin');
173
-
174
- // BrowserSync
175
- var browserSync = require('browser-sync');
176
-
177
212
  /**
178
213
  * Define CSS Plugins
179
214
  */
@@ -194,6 +229,7 @@ var cleanDist = function (done) {
194
229
 
195
230
  // Make sure this feature is activated before running
196
231
  if (!settings.clean) return done();
232
+ console.log("Cleaning: " + paths.output);
197
233
 
198
234
  // Clean the build folder
199
235
  del.sync([
@@ -205,13 +241,22 @@ var cleanDist = function (done) {
205
241
  };
206
242
 
207
243
  // Repeated JavaScript tasks
208
- var jsTasks = lazypipe()
244
+ var jsTasks = defineJsTasks();
245
+
246
+
247
+ function getOutputPath() {
248
+ return paths.scripts.output;
249
+ }
250
+
251
+ function defineJsTasks() {
252
+ return lazypipe()
209
253
  .pipe(header, banner.full, {package: package})
210
254
  .pipe(dest, paths.scripts.output)
211
255
  .pipe(rename, {suffix: '.min'})
212
256
  .pipe(uglify)
213
257
  .pipe(header, banner.min, {package: package})
214
258
  .pipe(dest, paths.scripts.output);
259
+ }
215
260
 
216
261
  // Lint, cssnano, and concatenate scripts
217
262
  var buildCoreScripts = function (done) {
@@ -219,6 +264,9 @@ var buildCoreScripts = function (done) {
219
264
  // Make sure this feature is activated before running
220
265
  if (!settings.coreScripts) return done();
221
266
 
267
+ // Redefine jsTasks because output directory may have changed.
268
+ jsTasks = defineJsTasks()
269
+
222
270
  // Run tasks on script files
223
271
  return src(paths.scripts.core)
224
272
  .pipe(flatmap(function(stream, file) {
@@ -259,6 +307,9 @@ var buildScripts = function (done) {
259
307
  // Make sure this feature is activated before running
260
308
  if (!settings.scripts) return done();
261
309
 
310
+ // Redefine jsTasks because output directory may have changed.
311
+ jsTasks = defineJsTasks()
312
+
262
313
  // Run tasks on script files
263
314
  return src(paths.scripts.input)
264
315
  .pipe(flatmap(function(stream, file) {
@@ -297,12 +348,12 @@ var buildVendorScripts = function(done) {
297
348
  if (!settings.scripts) return done();
298
349
 
299
350
  return src(vendor_scripts)
300
- .pipe(concat(paths.scripts.vfilename + '.js'))
301
- .pipe(header(banner.full, {package: package}))
302
- .pipe(dest(paths.scripts.output))
303
- .pipe(rename({suffix: '.min'}))
304
- .pipe(uglify())
305
- .pipe(dest(paths.scripts.output));
351
+ .pipe(concat(paths.scripts.vfilename + '.js'))
352
+ .pipe(header(banner.full, {package: package}))
353
+ .pipe(dest(paths.scripts.output))
354
+ .pipe(rename({suffix: '.min'}))
355
+ .pipe(uglify())
356
+ .pipe(dest(paths.scripts.output));
306
357
  }
307
358
 
308
359
  // Lint scripts
@@ -349,7 +400,8 @@ var buildSassConfig = function(done) {
349
400
  };
350
401
 
351
402
  return src(paths.styles.input)
352
- .pipe(exec(file => `parse-yaml _00_main_configuration.yml`),options)
403
+ .pipe(exec(file => `parse-yaml ${paths.styles.config}`),options)
404
+ .pipe(exec(file => `parse-yaml ${paths.styles.tempconfig}`),options)
353
405
  .pipe(exec.reporter(reportOptions));
354
406
  }
355
407
 
@@ -359,14 +411,15 @@ var buildStyles = function (done) {
359
411
  // Make sure this feature is activated before running
360
412
  if (!settings.styles) return done();
361
413
 
362
- // Run tasks on all Sass files
414
+ // Run tasks on all Sass filesbuild
363
415
 
364
416
  return src(paths.styles.input)
365
417
  .pipe(sourcemaps.init())
366
418
  .pipe(sass({
367
419
  outputStyle: 'compressed',
368
420
  includePaths: paths.styles.sassIncludePaths, // Allows @import declarations deeper in the tree to target top-level directories. Useful for loading in components and profiles.
369
- srcComments: false
421
+ srcComments: false,
422
+ silenceDeprecations: ['legacy-js-api', 'import', 'global-builtin','mixed-decls'], // The IDs of deprecations you want to silence
370
423
  }))
371
424
  .pipe(header(banner.full, { package : package }))
372
425
  .pipe(dest(paths.styles.output))
@@ -404,6 +457,8 @@ var buildImages = function (done) {
404
457
  // Make sure this feature is activated before running
405
458
  if (!settings.img) return done();
406
459
 
460
+ console.log("images");
461
+ console.log(paths.img.output);
407
462
  // Optimize SVG files
408
463
  return src(paths.img.input)
409
464
  .pipe(dest(paths.img.output));
@@ -430,7 +485,7 @@ var buildPNGs = function (done) {
430
485
  if (!settings.pngs) return done();
431
486
 
432
487
  // Optimize PNG files
433
- return src(paths.pngs.input, {encoding: false})
488
+ return src(paths.pngs.input)
434
489
  .pipe(imagemin())
435
490
  .pipe(dest(paths.pngs.output));
436
491
  };
@@ -446,6 +501,7 @@ var buildJPGs = function (done) {
446
501
  .pipe(dest(paths.jpgs.output));
447
502
  };
448
503
 
504
+
449
505
  // Copy Font Files
450
506
  var buildFonts = function (done) {
451
507
 
@@ -525,39 +581,115 @@ var watchMin = function (done) {
525
581
  done();
526
582
  };
527
583
 
584
+ /*
585
+ function getAlternativeConfigFiles() {
586
+ if (fs.existsSync(alt_config_dir)) {
587
+ const files = fs.readdirSync(alt_config_dir);
588
+
589
+ // Ensure that config files have yml extension.
590
+ // This prevents processing of stray files, like the Mac file system’s hidden .DS_Store files
591
+ return filteredFiles = files.filter(filename => {
592
+ return ymlFilePattern.test(filename)
593
+ });
594
+ } else {
595
+ return [];
596
+ }
597
+ }*/
528
598
 
599
+ var testSourceDirectory = function(done) {
600
+ if (!fs.existsSync(paths.input)) {
601
+ console.error("Source directory " + paths.input + " does not exist.");
602
+ }
529
603
 
604
+ done();
530
605
 
606
+ }
531
607
 
532
- /**
533
- * Export Tasks
534
- */
608
+ var resetTempConfigFile = function(done) {
609
+ const tempFilePath = './' + paths.styles.tempconfig;
610
+ // Reset temp file to blank file
611
+ const fd = fs.openSync(tempFilePath, 'w');
612
+ fs.closeSync(fd);
535
613
 
536
- // Default task
537
- // gulp
538
- exports.default = series(
539
- cleanDist,
540
- buildSassConfig,
541
- parallel(
614
+ // This file is created by the parse-yaml script run elsewhere, and needs to be cleaned up after
615
+ // the build process is complete. Perhaps this should be more configurable.
616
+ const sc = fs.openSync('./source/sass/00_configuration/_00_temp_configuration.sass','w');
617
+ fs.closeSync(sc);
618
+
619
+ done();
620
+ }
621
+
622
+ // Build alternative asset directories based on the presence of yml files in the alt-config folder.
623
+ var configAltAssets = function(done) {
624
+
625
+ if (alt_config_filename === null) {
626
+ done();
627
+ return;
628
+ }
629
+
630
+ if (!ymlFilePattern.test(alt_config_filename)) {
631
+ console.error('Alternative config file ' + alt_config_filename + ' is missing a yml extension. Is it a YAML file?')
632
+ }
633
+
634
+ const altname = alt_config_filename.match(ymlFilePattern)[1]; // to do – test against non matching strings.
635
+ const altpath = alt_config_dir + '/' + alt_config_filename;
636
+ const tempFilePath = './' + paths.styles.tempconfig;
637
+
638
+ if (!fs.existsSync(altpath) ) {
639
+ console.error("Configuration file " + altpath + " does not exist.");
640
+ done();
641
+ return;
642
+ }
643
+
644
+ // Match build directory to config filename
645
+ console.log ("Config alt assets passed checks");
646
+
647
+ const new_build_dir = './' + asset_basename + '-' + altname;
648
+ paths = getPaths(source_dir,new_build_dir);
649
+
650
+ // Copy config file to common location for later compilation.
651
+ fs.copyFileSync(altpath,tempFilePath);
652
+ done();
653
+ }
654
+
655
+ function buildAll(done) {
656
+ series(
657
+ testSourceDirectory,
658
+ configAltAssets,
659
+ cleanDist,
660
+ buildSassConfig,
661
+ buildStyles,
542
662
  lintScripts,
543
663
  buildCoreScripts,
544
664
  buildScripts,
545
665
  buildVendorScripts,
546
- buildStyles,
547
666
  buildVendorStyles,
548
667
  buildImages,
549
668
  buildSVGs,
550
669
  buildPNGs,
551
670
  buildJPGs,
552
671
  buildFonts,
553
- copyFiles
554
- ),
555
- buildModernizr
672
+ copyFiles,
673
+ resetTempConfigFile,
674
+ buildModernizr)(done);
675
+ }
676
+
677
+ /**
678
+ * Export Tasks
679
+ */
680
+
681
+ // Default task
682
+ // gulp
683
+ exports.default = series(
684
+ buildAll
556
685
  );
557
686
 
558
- exports.build = exports.default;
687
+ exports.build = series(
688
+ buildAll
689
+ );
559
690
 
560
691
  exports.sass = series(
692
+ configAltAssets,
561
693
  buildSassConfig,
562
694
  buildStyles
563
695
  );