@videinfra/static-website-builder 2.0.2 → 2.0.4

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.
Files changed (122) hide show
  1. package/.prettierrc +11 -11
  2. package/CHANGELOG.md +214 -210
  3. package/README.md +102 -102
  4. package/bin/builder.js +40 -40
  5. package/eslint.config.js +39 -39
  6. package/gulpfile.js +63 -63
  7. package/init/default/config/config.js +44 -44
  8. package/init/default/src/html/data/global.js +9 -9
  9. package/init/default/src/javascripts/_entries.js +14 -14
  10. package/init/index.js +63 -63
  11. package/init/test/.env +6 -6
  12. package/init/test/.env.local +3 -2
  13. package/init/test/config/config.js +71 -67
  14. package/init/test/src/html/404.twig +12 -12
  15. package/init/test/src/html/data/global.js +10 -10
  16. package/init/test/src/html/env.twig +21 -21
  17. package/init/test/src/html/layouts/base.twig +1 -1
  18. package/init/test/src/html/other.twig +9 -9
  19. package/init/test/src/html/preposition.twig +4 -4
  20. package/init/test/src/javascripts/_entries-alt.js +10 -10
  21. package/init/test/src/javascripts/_entries.js +19 -19
  22. package/init/test/src/javascripts/common.js +13 -13
  23. package/init/test/src/javascripts/main.js +8 -8
  24. package/init/test/src/javascripts/something.ts +9 -9
  25. package/init/test/src/stylesheets/autoprefixer-test.scss +3 -3
  26. package/init/test/src/stylesheets/env-test.scss +28 -28
  27. package/init/test/src/stylesheets/ignore-test.scss +4 -4
  28. package/init/test/src/stylesheets/nested-calc-test.scss +3 -3
  29. package/init/test/src/stylesheets/sub-folder/import-test.scss +2 -2
  30. package/lib/camelize-file-name.js +21 -21
  31. package/lib/generate-gulp-tasks.js +85 -85
  32. package/lib/get-config.js +203 -204
  33. package/lib/get-file-names.js +23 -23
  34. package/lib/get-path.js +102 -102
  35. package/lib/globs-helper.js +243 -243
  36. package/lib/gulp/dynamic-task.js +8 -8
  37. package/lib/gulp/resolve-dynamic-task.js +11 -11
  38. package/lib/gulp/task-before-dest.js +8 -8
  39. package/lib/gulp/task-end.js +10 -10
  40. package/lib/gulp/task-start.js +12 -12
  41. package/lib/gulp/task-watch.js +66 -66
  42. package/lib/init/copy-folder.js +50 -50
  43. package/lib/init/folder-exists.js +10 -10
  44. package/lib/init/get-folder-list.js +16 -16
  45. package/lib/init/merge-package.js +17 -17
  46. package/lib/init/read-package.js +17 -17
  47. package/lib/log-error.js +15 -15
  48. package/lib/merge.js +27 -27
  49. package/lib/run-preprocess.js +32 -32
  50. package/lib/task-order.js +19 -19
  51. package/package.json +68 -68
  52. package/plugins/example/preprocess-config.js +17 -17
  53. package/plugins/example/task.js +55 -55
  54. package/plugins/example.js +38 -38
  55. package/plugins/sass-engine/preprocess-config.js +59 -59
  56. package/plugins/sass.js +41 -41
  57. package/plugins/twig/lodash-filters/filters.js +91 -91
  58. package/plugins/twig/lodash-filters.js +14 -14
  59. package/plugins/twig/symfony-filters/filters.js +102 -102
  60. package/plugins/twig/symfony-filters/preposition_nbsp.js +77 -77
  61. package/plugins/twig/symfony-filters.js +14 -14
  62. package/plugins/twig/symfony-functions/functions.js +31 -31
  63. package/plugins/twig/symfony-functions.js +14 -14
  64. package/plugins/twig-engine/preprocess-config.js +53 -53
  65. package/plugins/twig.js +74 -74
  66. package/tasks/browser-sync/config.js +39 -39
  67. package/tasks/browser-sync/preprocess-config.js +32 -32
  68. package/tasks/browser-sync/task.js +9 -9
  69. package/tasks/clean/config.js +20 -20
  70. package/tasks/clean/preprocess-config.js +19 -19
  71. package/tasks/clean/task.js +7 -7
  72. package/tasks/data/config.js +34 -34
  73. package/tasks/data/data-loader-js.js +14 -14
  74. package/tasks/data/data-loader-json.js +5 -5
  75. package/tasks/data/get-data.js +96 -96
  76. package/tasks/env/config.js +26 -23
  77. package/tasks/env/get-env.js +113 -81
  78. package/tasks/fonts/config.js +24 -24
  79. package/tasks/fonts/task.js +47 -47
  80. package/tasks/global/config.js +7 -7
  81. package/tasks/html/config.js +42 -42
  82. package/tasks/html/task.js +91 -91
  83. package/tasks/icons/config.js +47 -47
  84. package/tasks/icons/preprocess-config.js +60 -60
  85. package/tasks/icons/task.js +56 -56
  86. package/tasks/images/config.js +27 -27
  87. package/tasks/images/task.js +46 -46
  88. package/tasks/javascripts/config.js +69 -69
  89. package/tasks/javascripts/preprocess-config.js +109 -109
  90. package/tasks/javascripts/task.js +86 -86
  91. package/tasks/sitemap/config.js +48 -48
  92. package/tasks/sitemap/preprocess-config.js +18 -18
  93. package/tasks/sitemap/task.js +69 -69
  94. package/tasks/sizereport/config.js +23 -23
  95. package/tasks/sizereport/task.js +16 -16
  96. package/tasks/static/config.js +27 -27
  97. package/tasks/static/task.js +46 -46
  98. package/tasks/stylesheets/config.js +85 -85
  99. package/tasks/stylesheets/preprocess-config.js +41 -41
  100. package/tasks/stylesheets/task.js +73 -73
  101. package/tests/build/build.test.js +153 -153
  102. package/tests/camelize-file-name.test.js +11 -11
  103. package/tests/generate-gulp-tasks.test.js +78 -78
  104. package/tests/glob-helper.test.js +99 -99
  105. package/tests/merge.test.js +10 -10
  106. package/tests/preposition_nbsp.test.js +50 -50
  107. package/tests/run-preprocess.test.js +90 -90
  108. package/tests/sass-stringify.test.js +24 -24
  109. package/tests/sitemap.test.js +12 -12
  110. package/vendor/gulp-rolldown/index.js +151 -151
  111. package/vendor/gulp-rolldown/plugin-raw.js +17 -17
  112. package/vendor/gulp-rolldown/plugin-virtual-entry.js +30 -30
  113. package/vendor/gulp-sass/CHANGELOG.md +168 -168
  114. package/vendor/gulp-sass/LICENSE +20 -20
  115. package/vendor/gulp-sass/README.md +187 -187
  116. package/vendor/gulp-sass/index.js +208 -208
  117. package/vendor/gulp-sass/package.json +61 -61
  118. package/vendor/gulp-sass/sass-stringify.js +32 -32
  119. package/vendor/gulp-twig/LICENSE +20 -20
  120. package/vendor/gulp-twig/README.md +167 -167
  121. package/vendor/gulp-twig/index.js +138 -138
  122. package/vendor/gulp-twig/package.json +44 -44
@@ -1,67 +1,71 @@
1
- /*
2
- * Build a project for testing
3
- */
4
-
5
- import * as sassPlugin from '../../../plugins/sass.js';
6
- import * as twigPlugin from '../../../plugins/twig.js';
7
- import * as symfonyFiltersPlugin from '../../../plugins/twig/symfony-filters.js';
8
-
9
- export const clean = {};
10
- export const staticFiles = {};
11
- export const html = {};
12
- export const data = {};
13
- export const fonts = {};
14
- export const icons = {};
15
- export const images = {};
16
- export const javascripts = {
17
- entryList: [
18
- {
19
- name: '_entries.js',
20
- shared: 'shared',
21
- },
22
- {
23
- name: '_entries-alt.js',
24
- shared: 'shared',
25
- outpuSubFolder: 'alt'
26
- },
27
- ],
28
- };
29
- export const stylesheets = {};
30
- export const sizereport = false;
31
-
32
- export const plugins = [
33
- // Enables SASS engine and .sass and .scss file compilation
34
- sassPlugin,
35
-
36
- // Enables TwigJS engine .twig file compilation
37
- twigPlugin,
38
-
39
- // Enables TWIG Symfony filters
40
- symfonyFiltersPlugin,
41
- ];
42
-
43
- export const env = {
44
- map: {
45
- 'HOST': 'host',
46
- 'FOO': 'foo',
47
- 'BAR': 'bar',
48
- 'TYPE_BOOL_TRUE': 'typeBoolTrue',
49
- 'TYPE_BOOL_FALSE': 'typeBoolFalse',
50
- 'TYPE_NUMBER': 'typeNumber',
51
- 'TYPE_EMPTY': 'typeEmpty',
52
- },
53
- };
54
-
55
- /*
56
- * Path configuration
57
- * All options will be merged with defaults, but not replaces whole configuration object
58
- *
59
- * Default configuration can be seen here https://github.com/videinfra/static-website-builder/tree/master/tasks
60
- * in each tasks config.js file
61
- */
62
-
63
- export const paths = {
64
- src: './init/test/src',
65
- dest: './tests/build/public',
66
- env: ['./init/test/.env', './init/test/.env.local'],
67
- };
1
+ /*
2
+ * Build a project for testing
3
+ */
4
+
5
+ import * as sassPlugin from '../../../plugins/sass.js';
6
+ import * as twigPlugin from '../../../plugins/twig.js';
7
+ import * as symfonyFiltersPlugin from '../../../plugins/twig/symfony-filters.js';
8
+
9
+ export const clean = {};
10
+ export const staticFiles = {};
11
+ export const html = {};
12
+ export const data = {};
13
+ export const fonts = {};
14
+ export const icons = {};
15
+ export const images = {};
16
+ export const javascripts = {
17
+ entryList: [
18
+ {
19
+ name: '_entries.js',
20
+ shared: 'shared',
21
+ },
22
+ {
23
+ name: '_entries-alt.js',
24
+ shared: 'shared',
25
+ outpuSubFolder: 'alt'
26
+ },
27
+ ],
28
+ };
29
+ export const stylesheets = {};
30
+ export const sizereport = false;
31
+
32
+ export const plugins = [
33
+ // Enables SASS engine and .sass and .scss file compilation
34
+ sassPlugin,
35
+
36
+ // Enables TwigJS engine .twig file compilation
37
+ twigPlugin,
38
+
39
+ // Enables TWIG Symfony filters
40
+ symfonyFiltersPlugin,
41
+ ];
42
+
43
+ export const env = {
44
+ // Write ASSET_VERSION to .env file to enable cache busting
45
+ // writeAssetVersion: './init/test/.env.local',
46
+
47
+ // How env variable names should be remapped
48
+ map: {
49
+ 'HOST': 'host',
50
+ 'FOO': 'foo',
51
+ 'BAR': 'bar',
52
+ 'TYPE_BOOL_TRUE': 'typeBoolTrue',
53
+ 'TYPE_BOOL_FALSE': 'typeBoolFalse',
54
+ 'TYPE_NUMBER': 'typeNumber',
55
+ 'TYPE_EMPTY': 'typeEmpty',
56
+ },
57
+ };
58
+
59
+ /*
60
+ * Path configuration
61
+ * All options will be merged with defaults, but not replaces whole configuration object
62
+ *
63
+ * Default configuration can be seen here https://github.com/videinfra/static-website-builder/tree/master/tasks
64
+ * in each tasks config.js file
65
+ */
66
+
67
+ export const paths = {
68
+ src: './init/test/src',
69
+ dest: './tests/build/public',
70
+ env: ['./init/test/.env', './init/test/.env.local'],
71
+ };
@@ -1,12 +1,12 @@
1
- {% from 'macros/icon.twig' import icon %}
2
- {% extends 'layouts/base.twig' %}
3
-
4
- {% block head %}
5
- <head>
6
- <meta name="robots" content="noindex" />
7
- </head>
8
- {% endblock %}
9
-
10
- {% block body %}
11
- <h1>{{ hello }} {{ world }}!</h1>
12
- {% endblock %}
1
+ {% from 'macros/icon.twig' import icon %}
2
+ {% extends 'layouts/base.twig' %}
3
+
4
+ {% block head %}
5
+ <head>
6
+ <meta name="robots" content="noindex" />
7
+ </head>
8
+ {% endblock %}
9
+
10
+ {% block body %}
11
+ <h1>{{ hello }} {{ world }}!</h1>
12
+ {% endblock %}
@@ -1,10 +1,10 @@
1
- /**
2
- * Content exported from this file is avaiable in the templates as variables
3
- *
4
- * @example
5
- * <div>{{ name }}</div>
6
- */
7
- export default {
8
- 'world': 'World',
9
- 'hostFromGlobalJS': process.env.host,
10
- };
1
+ /**
2
+ * Content exported from this file is avaiable in the templates as variables
3
+ *
4
+ * @example
5
+ * <div>{{ name }}</div>
6
+ */
7
+ export default {
8
+ 'world': 'World',
9
+ 'hostFromGlobalJS': process.env.host,
10
+ };
@@ -1,21 +1,21 @@
1
- {% from 'macros/icon.twig' import icon %}
2
- {% extends 'layouts/base.twig' %}
3
-
4
- {% block body %}
5
- <p>HOST: {{ host }}</p>
6
- <p>HOST FROM GLOBAL JS: {{ hostFromGlobalJS }}</p>
7
-
8
- {% if typeBoolTrue %}
9
- <p>TYPE_BOOL_TRUE: pass</p>
10
- {% else %}
11
- <p>TYPE_BOOL_TRUE: fail</p>
12
- {% endif %}
13
-
14
- {% if typeBoolFalse %}
15
- <p>TYPE_BOOL_FALSE: fail</p>
16
- {% else %}
17
- <p>TYPE_BOOL_FALSE: pass</p>
18
- {% endif %}
19
-
20
- <p>TYPE_NUMBER: {{ typeNumber }}</p>
21
- {% endblock %}
1
+ {% from 'macros/icon.twig' import icon %}
2
+ {% extends 'layouts/base.twig' %}
3
+
4
+ {% block body %}
5
+ <p>HOST: {{ host }}</p>
6
+ <p>HOST FROM GLOBAL JS: {{ hostFromGlobalJS }}</p>
7
+
8
+ {% if typeBoolTrue %}
9
+ <p>TYPE_BOOL_TRUE: pass</p>
10
+ {% else %}
11
+ <p>TYPE_BOOL_TRUE: fail</p>
12
+ {% endif %}
13
+
14
+ {% if typeBoolFalse %}
15
+ <p>TYPE_BOOL_FALSE: fail</p>
16
+ {% else %}
17
+ <p>TYPE_BOOL_FALSE: pass</p>
18
+ {% endif %}
19
+
20
+ <p>TYPE_NUMBER: {{ typeNumber }}</p>
21
+ {% endblock %}
@@ -1 +1 @@
1
- <html>{% block head %}{% endblock %}<body>{% block body %}{% endblock %}</body></html>
1
+ <html>{% block head %}{% endblock %}<body>{% block body %}{% endblock %}</body></html>
@@ -1,9 +1,9 @@
1
- {% extends 'layouts/base.twig' %}
2
-
3
- {% block head %}
4
- <link rel="stylesheet" href="/assets/stylesheets/nested-calc-test.css">
5
- {% endblock %}
6
- {% block body %}
7
- Another file
8
- <script type="module" src="/assets/javascripts/other.js"></script>
9
- {% endblock %}
1
+ {% extends 'layouts/base.twig' %}
2
+
3
+ {% block head %}
4
+ <link rel="stylesheet" href="/assets/stylesheets/nested-calc-test.css">
5
+ {% endblock %}
6
+ {% block body %}
7
+ Another file
8
+ <script type="module" src="/assets/javascripts/other.js"></script>
9
+ {% endblock %}
@@ -1,4 +1,4 @@
1
-
2
- {% extends 'layouts/base.twig' %}
3
-
4
- {% block body %}{{ 'hello at world' | preposition_nbsp }}{% endblock %}
1
+
2
+ {% extends 'layouts/base.twig' %}
3
+
4
+ {% block body %}{{ 'hello at world' | preposition_nbsp }}{% endblock %}
@@ -1,10 +1,10 @@
1
- /*
2
- * All files listed in here are created / compiled and additionally
3
- * shared.js is automatically created, which contains all common JS (chunks / modules imported from more than 1 entry files).
4
- */
5
- export default {
6
- 'main': [
7
- 'common.js',
8
- 'main.js',
9
- ]
10
- };
1
+ /*
2
+ * All files listed in here are created / compiled and additionally
3
+ * shared.js is automatically created, which contains all common JS (chunks / modules imported from more than 1 entry files).
4
+ */
5
+ export default {
6
+ 'main': [
7
+ 'common.js',
8
+ 'main.js',
9
+ ]
10
+ };
@@ -1,19 +1,19 @@
1
- /*
2
- * All files listed in here are created / compiled and additionally
3
- * shared.js is automatically created, which contains all common JS (chunks / modules imported from more than 1 entry files).
4
- */
5
- export default {
6
- 'main': [
7
- 'common.js',
8
- 'main.js',
9
- ],
10
- 'other': [
11
- 'common.js',
12
- 'other.js',
13
- ],
14
- 'something': [
15
- 'common.js',
16
- 'something.ts',
17
- ],
18
- };
19
-
1
+ /*
2
+ * All files listed in here are created / compiled and additionally
3
+ * shared.js is automatically created, which contains all common JS (chunks / modules imported from more than 1 entry files).
4
+ */
5
+ export default {
6
+ 'main': [
7
+ 'common.js',
8
+ 'main.js',
9
+ ],
10
+ 'other': [
11
+ 'common.js',
12
+ 'other.js',
13
+ ],
14
+ 'something': [
15
+ 'common.js',
16
+ 'something.ts',
17
+ ],
18
+ };
19
+
@@ -1,13 +1,13 @@
1
- /**
2
- * Shared file entry point
3
- */
4
-
5
- console.log('Shared file loaded');
6
-
7
- const config = {
8
- a: {
9
- b: 'c',
10
- },
11
- };
12
-
13
- console.log(config?.a?.b);
1
+ /**
2
+ * Shared file entry point
3
+ */
4
+
5
+ console.log('Shared file loaded');
6
+
7
+ const config = {
8
+ a: {
9
+ b: 'c',
10
+ },
11
+ };
12
+
13
+ console.log(config?.a?.b);
@@ -1,8 +1,8 @@
1
- /* global process */
2
- console.log('Hello from main page!');
3
- console.log('env.host ==', process.env.host);
4
- console.log('env.foo ==', process.env.foo);
5
- console.log('env.bar ==', process.env.bar);
6
- console.log('env.typeBoolTrue ==', process.env.typeBoolTrue);
7
- console.log('env.typeBoolFalse ==', process.env.typeBoolFalse);
8
- console.log('env.typeNumber ==', process.env.typeNumber);
1
+ /* global process */
2
+ console.log('Hello from main page!');
3
+ console.log('env.host ==', process.env.host);
4
+ console.log('env.foo ==', process.env.foo);
5
+ console.log('env.bar ==', process.env.bar);
6
+ console.log('env.typeBoolTrue ==', process.env.typeBoolTrue);
7
+ console.log('env.typeBoolFalse ==', process.env.typeBoolFalse);
8
+ console.log('env.typeNumber ==', process.env.typeNumber);
@@ -1,9 +1,9 @@
1
- type Something = {
2
- name: string;
3
- }
4
-
5
- const something: Something = {
6
- name: 'something',
7
- }
8
-
9
- console.log(something);
1
+ type Something = {
2
+ name: string;
3
+ }
4
+
5
+ const something: Something = {
6
+ name: 'something',
7
+ }
8
+
9
+ console.log(something);
@@ -1,3 +1,3 @@
1
- main {
2
- clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
3
- }
1
+ main {
2
+ clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
3
+ }
@@ -1,28 +1,28 @@
1
- .env-test:before {
2
- content: map-get($env, host);
3
- }
4
-
5
- :root {
6
- #{ --env-test-type-number }: map-get($env, typeNumber);
7
- #{ --env-test-type-empty }: map-get($env, typeEmpty);
8
- }
9
-
10
- @if map-get($env, typeBoolTrue) {
11
- :root {
12
- --env-test-bool-true: true;
13
- }
14
- } @else {
15
- :root {
16
- --env-test-bool-true: false;
17
- }
18
- }
19
-
20
- @if map-get($env, typeBoolFalse) {
21
- :root {
22
- --env-test-bool-false: true;
23
- }
24
- } @else {
25
- :root {
26
- --env-test-bool-false: false;
27
- }
28
- }
1
+ .env-test:before {
2
+ content: map-get($env, host);
3
+ }
4
+
5
+ :root {
6
+ #{ --env-test-type-number }: map-get($env, typeNumber);
7
+ #{ --env-test-type-empty }: map-get($env, typeEmpty);
8
+ }
9
+
10
+ @if map-get($env, typeBoolTrue) {
11
+ :root {
12
+ --env-test-bool-true: true;
13
+ }
14
+ } @else {
15
+ :root {
16
+ --env-test-bool-true: false;
17
+ }
18
+ }
19
+
20
+ @if map-get($env, typeBoolFalse) {
21
+ :root {
22
+ --env-test-bool-false: true;
23
+ }
24
+ } @else {
25
+ :root {
26
+ --env-test-bool-false: false;
27
+ }
28
+ }
@@ -1,4 +1,4 @@
1
- :root {
2
- --yes: ;
3
- --no: initial;
4
- }
1
+ :root {
2
+ --yes: ;
3
+ --no: initial;
4
+ }
@@ -1,3 +1,3 @@
1
- body {
2
- padding-top: calc(10vw + calc(10vh * 1.5));
3
- }
1
+ body {
2
+ padding-top: calc(10vw + calc(10vh * 1.5));
3
+ }
@@ -1,2 +1,2 @@
1
- @import "settings/colors";
2
- @import "components/button";
1
+ @import "settings/colors";
2
+ @import "components/button";
@@ -1,21 +1,21 @@
1
- /**
2
- * Camelize filename
3
- *
4
- * @param {string} str File name
5
- * @returns {string} Camelized name
6
- */
7
- export default function camelizeFileName (str) {
8
- return str
9
- // Remove extension
10
- .replace(/(.+?)\..*$/ig, '$1')
11
- // Remove dot
12
- .replace(/\./g, '')
13
- // Replace non alpha-numeric characters
14
- .replace(/[^a-z0-9]/ig, ' ')
15
- // Uppercase words
16
- .replace(/(?:^\w|[A-Z]|\b\w)/g, function(word, index) {
17
- return index === 0 ? word.toLowerCase() : word.toUpperCase();
18
- })
19
- // Remove empty spaces
20
- .replace(/\s+/g, '');
21
- }
1
+ /**
2
+ * Camelize filename
3
+ *
4
+ * @param {string} str File name
5
+ * @returns {string} Camelized name
6
+ */
7
+ export default function camelizeFileName (str) {
8
+ return str
9
+ // Remove extension
10
+ .replace(/(.+?)\..*$/ig, '$1')
11
+ // Remove dot
12
+ .replace(/\./g, '')
13
+ // Replace non alpha-numeric characters
14
+ .replace(/[^a-z0-9]/ig, ' ')
15
+ // Uppercase words
16
+ .replace(/(?:^\w|[A-Z]|\b\w)/g, function(word, index) {
17
+ return index === 0 ? word.toLowerCase() : word.toUpperCase();
18
+ })
19
+ // Remove empty spaces
20
+ .replace(/\s+/g, '');
21
+ }