js-build-tools 5.1.0 → 5.2.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/README.md +273 -274
- package/dist/bundle.js +17 -1
- package/dist/bundle.min.js +1 -1
- package/dist/partials/tsFor.js +30 -8
- package/functions/bundle.mjs +20 -4
- package/functions/bundle.test.mjs +74 -0
- package/functions/partials/tsFor.mjs +25 -3
- package/functions/partials/tsFor.test.mjs +11 -1
- package/gulp.config.mjs +10 -0
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -408,277 +408,276 @@ Run any of the above commands with `gulp` or `npm run`.
|
|
|
408
408
|
|
|
409
409
|
# Available functions documentation
|
|
410
410
|
|
|
411
|
-
## Modules
|
|
412
|
-
|
|
413
|
-
<dl>
|
|
414
|
-
<dt><a href="#module_js-build-tools">js-build-tools</a></dt>
|
|
415
|
-
<dd><p>Export these functions to your own project to customize your build pipeline.</p>
|
|
416
|
-
</dd>
|
|
417
|
-
<dt><a href="#module_gulpConfig">gulpConfig</a></dt>
|
|
418
|
-
<dd><p>Modify these configurations to match your project specifications.</p>
|
|
419
|
-
</dd>
|
|
420
|
-
</dl>
|
|
421
|
-
|
|
422
|
-
<a name="module_js-build-tools"></a>
|
|
423
|
-
|
|
424
|
-
## js-build-tools
|
|
425
|
-
Export these functions to your own project to customize your build pipeline.
|
|
426
|
-
|
|
427
|
-
**Version**: 3.0.0
|
|
428
|
-
**Author**: Joshua Heagle <joshuaheagle@gmail.com>
|
|
429
|
-
<a name="module_js-build-tools.build"></a>
|
|
430
|
-
|
|
431
|
-
### js-build-tools.build() ⇒ <code>stream.Stream</code>
|
|
432
|
-
Runs several processes to build and validate the project.
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
**
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
*
|
|
445
|
-
|
|
446
|
-
* [.
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
* [~
|
|
450
|
-
* [~
|
|
451
|
-
* [~
|
|
452
|
-
* [~
|
|
453
|
-
* [~
|
|
454
|
-
* [~
|
|
455
|
-
* [~
|
|
456
|
-
* [~
|
|
457
|
-
* [~
|
|
458
|
-
* [~
|
|
459
|
-
* [~
|
|
460
|
-
* [~
|
|
461
|
-
* [~
|
|
462
|
-
* [~
|
|
463
|
-
* [~
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
|
474
|
-
|
|
|
475
|
-
|
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
|
486
|
-
|
|
|
487
|
-
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
**
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
|
523
|
-
|
|
|
524
|
-
|
|
|
525
|
-
|
|
|
526
|
-
|
|
|
527
|
-
|
|
|
528
|
-
|
|
|
529
|
-
|
|
|
530
|
-
|
|
|
531
|
-
|
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
**
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
|
555
|
-
|
|
|
556
|
-
|
|
|
557
|
-
|
|
|
558
|
-
|
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
**
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
|
570
|
-
|
|
|
571
|
-
|
|
|
572
|
-
|
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
**
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
|
584
|
-
|
|
|
585
|
-
|
|
|
586
|
-
|
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
**
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
|
598
|
-
|
|
|
599
|
-
|
|
|
600
|
-
|
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
**
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
|
612
|
-
|
|
|
613
|
-
|
|
|
614
|
-
|
|
|
615
|
-
|
|
|
616
|
-
|
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
**
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
|
628
|
-
|
|
|
629
|
-
|
|
|
630
|
-
|
|
|
631
|
-
|
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
**
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
|
643
|
-
|
|
|
644
|
-
|
|
|
645
|
-
|
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
**
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
|
657
|
-
|
|
|
658
|
-
|
|
|
659
|
-
|
|
|
660
|
-
|
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
**
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
|
672
|
-
|
|
|
673
|
-
|
|
|
674
|
-
|
|
|
675
|
-
|
|
|
676
|
-
|
|
|
677
|
-
|
|
|
678
|
-
|
|
|
679
|
-
|
|
|
680
|
-
|
|
|
681
|
-
|
|
|
682
|
-
|
|
|
683
|
-
|
|
684
|
-
|
|
411
|
+
## Modules
|
|
412
|
+
|
|
413
|
+
<dl>
|
|
414
|
+
<dt><a href="#module_js-build-tools">js-build-tools</a></dt>
|
|
415
|
+
<dd><p>Export these functions to your own project to customize your build pipeline.</p>
|
|
416
|
+
</dd>
|
|
417
|
+
<dt><a href="#module_gulpConfig">gulpConfig</a></dt>
|
|
418
|
+
<dd><p>Modify these configurations to match your project specifications.</p>
|
|
419
|
+
</dd>
|
|
420
|
+
</dl>
|
|
421
|
+
|
|
422
|
+
<a name="module_js-build-tools"></a>
|
|
423
|
+
|
|
424
|
+
## js-build-tools
|
|
425
|
+
Export these functions to your own project to customize your build pipeline.
|
|
426
|
+
|
|
427
|
+
**Version**: 3.0.0
|
|
428
|
+
**Author**: Joshua Heagle <joshuaheagle@gmail.com>
|
|
429
|
+
<a name="module_js-build-tools.build"></a>
|
|
430
|
+
|
|
431
|
+
### js-build-tools.build() ⇒ <code>stream.Stream</code>
|
|
432
|
+
Runs several processes to build and validate the project.
|
|
433
|
+
|
|
434
|
+
**Kind**: static method of [<code>js-build-tools</code>](#module_js-build-tools)
|
|
435
|
+
<a name="module_gulpConfig"></a>
|
|
436
|
+
|
|
437
|
+
## gulpConfig
|
|
438
|
+
Modify these configurations to match your project specifications.
|
|
439
|
+
|
|
440
|
+
**Version**: 3.0.0
|
|
441
|
+
**Author**: Joshua Heagle <joshuaheagle@gmail.com>
|
|
442
|
+
|
|
443
|
+
* [gulpConfig](#module_gulpConfig)
|
|
444
|
+
* _static_
|
|
445
|
+
* [.get(path, defaultValue)](#module_gulpConfig.get) ⇒ <code>\*</code> \| <code>null</code>
|
|
446
|
+
* [.set(path, value)](#module_gulpConfig.set) ⇒ <code>\*</code>
|
|
447
|
+
* _inner_
|
|
448
|
+
* [~ArrayableSetting](#module_gulpConfig..ArrayableSetting) : <code>Array.<string></code> \| <code>string</code>
|
|
449
|
+
* [~BooleanSetting](#module_gulpConfig..BooleanSetting) : <code>boolean</code>
|
|
450
|
+
* [~FlagStringSetting](#module_gulpConfig..FlagStringSetting) : <code>false</code> \| <code>StringSetting</code>
|
|
451
|
+
* [~FlagsSetting](#module_gulpConfig..FlagsSetting) : <code>Object.<string, BooleanSetting></code>
|
|
452
|
+
* [~JestTestFlags](#module_gulpConfig..JestTestFlags) : <code>FlagsSetting</code>
|
|
453
|
+
* [~StringSetting](#module_gulpConfig..StringSetting) : <code>string</code>
|
|
454
|
+
* [~Setting](#module_gulpConfig..Setting) : <code>ArrayableSetting</code> \| <code>BooleanSetting</code> \| <code>FlagsSetting</code> \| <code>StringSetting</code>
|
|
455
|
+
* [~BrowserConfig](#module_gulpConfig..BrowserConfig) : <code>Object.<string, Setting></code>
|
|
456
|
+
* [~DistConfig](#module_gulpConfig..DistConfig) : <code>Object.<string, Setting></code>
|
|
457
|
+
* [~FontConfig](#module_gulpConfig..FontConfig) : <code>Object.<string, Setting></code>
|
|
458
|
+
* [~ImageConfig](#module_gulpConfig..ImageConfig) : <code>Object.<string, Setting></code>
|
|
459
|
+
* [~ReadmeConfig](#module_gulpConfig..ReadmeConfig) : <code>Object.<string, Setting></code>
|
|
460
|
+
* [~SassConfig](#module_gulpConfig..SassConfig) : <code>Object.<string, Setting></code>
|
|
461
|
+
* [~TestConfig](#module_gulpConfig..TestConfig) : <code>Object.<string, Setting></code>
|
|
462
|
+
* [~TsConfig](#module_gulpConfig..TsConfig) : <code>Object.<string, Setting></code>
|
|
463
|
+
* [~Configurations](#module_gulpConfig..Configurations) : <code>Object.<string, Setting></code>
|
|
464
|
+
|
|
465
|
+
<a name="module_gulpConfig.get"></a>
|
|
466
|
+
|
|
467
|
+
### gulpConfig.get(path, defaultValue) ⇒ <code>\*</code> \| <code>null</code>
|
|
468
|
+
Retrieve a value from the configurations, default may be returned.
|
|
469
|
+
|
|
470
|
+
**Kind**: static method of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
471
|
+
|
|
472
|
+
| Param | Type | Default |
|
|
473
|
+
| --- | --- | --- |
|
|
474
|
+
| path | <code>string</code> \| <code>null</code> | <code>null</code> |
|
|
475
|
+
| defaultValue | <code>\*</code> | <code></code> |
|
|
476
|
+
|
|
477
|
+
<a name="module_gulpConfig.set"></a>
|
|
478
|
+
|
|
479
|
+
### gulpConfig.set(path, value) ⇒ <code>\*</code>
|
|
480
|
+
Specify a value for the configurations to use.
|
|
481
|
+
|
|
482
|
+
**Kind**: static method of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
483
|
+
|
|
484
|
+
| Param |
|
|
485
|
+
| --- |
|
|
486
|
+
| path |
|
|
487
|
+
| value |
|
|
488
|
+
|
|
489
|
+
<a name="module_gulpConfig..ArrayableSetting"></a>
|
|
490
|
+
|
|
491
|
+
### gulpConfig~ArrayableSetting : <code>Array.<string></code> \| <code>string</code>
|
|
492
|
+
A setting that may be an array of strings or a string only.
|
|
493
|
+
|
|
494
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
495
|
+
<a name="module_gulpConfig..BooleanSetting"></a>
|
|
496
|
+
|
|
497
|
+
### gulpConfig~BooleanSetting : <code>boolean</code>
|
|
498
|
+
A setting that may be true or false.
|
|
499
|
+
|
|
500
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
501
|
+
<a name="module_gulpConfig..FlagStringSetting"></a>
|
|
502
|
+
|
|
503
|
+
### gulpConfig~FlagStringSetting : <code>false</code> \| <code>StringSetting</code>
|
|
504
|
+
A setting that may be flag 'false' or provide a StringSetting
|
|
505
|
+
|
|
506
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
507
|
+
<a name="module_gulpConfig..FlagsSetting"></a>
|
|
508
|
+
|
|
509
|
+
### gulpConfig~FlagsSetting : <code>Object.<string, BooleanSetting></code>
|
|
510
|
+
An object of boolean settings used as flags.
|
|
511
|
+
|
|
512
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
513
|
+
<a name="module_gulpConfig..JestTestFlags"></a>
|
|
514
|
+
|
|
515
|
+
### gulpConfig~JestTestFlags : <code>FlagsSetting</code>
|
|
516
|
+
Configure cli options for running Jest.
|
|
517
|
+
|
|
518
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
519
|
+
**Properties**
|
|
520
|
+
|
|
521
|
+
| Name | Type |
|
|
522
|
+
| --- | --- |
|
|
523
|
+
| clearCache | <code>BooleanSetting</code> |
|
|
524
|
+
| debug | <code>BooleanSetting</code> |
|
|
525
|
+
| ignoreProjects: | <code>BooleanSetting</code> |
|
|
526
|
+
| json | <code>BooleanSetting</code> |
|
|
527
|
+
| selectProjects | <code>BooleanSetting</code> |
|
|
528
|
+
| showConfig | <code>BooleanSetting</code> |
|
|
529
|
+
| useStderr | <code>BooleanSetting</code> |
|
|
530
|
+
| watch | <code>BooleanSetting</code> |
|
|
531
|
+
| watchAll | <code>BooleanSetting</code> |
|
|
532
|
+
|
|
533
|
+
<a name="module_gulpConfig..StringSetting"></a>
|
|
534
|
+
|
|
535
|
+
### gulpConfig~StringSetting : <code>string</code>
|
|
536
|
+
A setting that may only be a string.
|
|
537
|
+
|
|
538
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
539
|
+
<a name="module_gulpConfig..Setting"></a>
|
|
540
|
+
|
|
541
|
+
### gulpConfig~Setting : <code>ArrayableSetting</code> \| <code>BooleanSetting</code> \| <code>FlagsSetting</code> \| <code>StringSetting</code>
|
|
542
|
+
Any single configuration option is a Setting.
|
|
543
|
+
|
|
544
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
545
|
+
<a name="module_gulpConfig..BrowserConfig"></a>
|
|
546
|
+
|
|
547
|
+
### gulpConfig~BrowserConfig : <code>Object.<string, Setting></code>
|
|
548
|
+
Configurations for building the browser files.
|
|
549
|
+
|
|
550
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
551
|
+
**Properties**
|
|
552
|
+
|
|
553
|
+
| Name | Type | Description |
|
|
554
|
+
| --- | --- | --- |
|
|
555
|
+
| enabled | <code>BooleanSetting</code> | 'true' to generate browser bundled files; 'false' for node environment only |
|
|
556
|
+
| from | <code>StringSetting</code> | The name to use for the browser-bundled output file (.js will be appended). |
|
|
557
|
+
| name | <code>StringSetting</code> | The search pattern used for retrieving compiled distribution files. |
|
|
558
|
+
| to | <code>StringSetting</code> | The output directory for browser-bundled files. |
|
|
559
|
+
|
|
560
|
+
<a name="module_gulpConfig..DistConfig"></a>
|
|
561
|
+
|
|
562
|
+
### gulpConfig~DistConfig : <code>Object.<string, Setting></code>
|
|
563
|
+
Configurations for building the node distribution files.
|
|
564
|
+
|
|
565
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
566
|
+
**Properties**
|
|
567
|
+
|
|
568
|
+
| Name | Type | Description |
|
|
569
|
+
| --- | --- | --- |
|
|
570
|
+
| from | <code>StringSetting</code> | The search pattern used for gathering source files for distribution. |
|
|
571
|
+
| main | <code>StringSetting</code> | Name of the entry the distribution file. |
|
|
572
|
+
| to | <code>StringSetting</code> | The output directory for the distribution files. |
|
|
573
|
+
|
|
574
|
+
<a name="module_gulpConfig..FontConfig"></a>
|
|
575
|
+
|
|
576
|
+
### gulpConfig~FontConfig : <code>Object.<string, Setting></code>
|
|
577
|
+
Configurations for copying the font files.
|
|
578
|
+
|
|
579
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
580
|
+
**Properties**
|
|
581
|
+
|
|
582
|
+
| Name | Type | Description |
|
|
583
|
+
| --- | --- | --- |
|
|
584
|
+
| enabled | <code>BooleanSetting</code> | Toggle copy directory of fonts on. |
|
|
585
|
+
| from | <code>StringSetting</code> | Path to search for fonts. |
|
|
586
|
+
| to | <code>StringSetting</code> | Path to output fonts. |
|
|
587
|
+
|
|
588
|
+
<a name="module_gulpConfig..ImageConfig"></a>
|
|
589
|
+
|
|
590
|
+
### gulpConfig~ImageConfig : <code>Object.<string, Setting></code>
|
|
591
|
+
Configurations to minify and copy the images.
|
|
592
|
+
|
|
593
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
594
|
+
**Properties**
|
|
595
|
+
|
|
596
|
+
| Name | Type | Description |
|
|
597
|
+
| --- | --- | --- |
|
|
598
|
+
| enabled | <code>BooleanSetting</code> | Toggle image minify and copy process. |
|
|
599
|
+
| from | <code>StringSetting</code> | Path to search for images. |
|
|
600
|
+
| to | <code>StringSetting</code> | Path to output images. |
|
|
601
|
+
|
|
602
|
+
<a name="module_gulpConfig..ReadmeConfig"></a>
|
|
603
|
+
|
|
604
|
+
### gulpConfig~ReadmeConfig : <code>Object.<string, Setting></code>
|
|
605
|
+
Configurations to compile and generate the Readme file.
|
|
606
|
+
|
|
607
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
608
|
+
**Properties**
|
|
609
|
+
|
|
610
|
+
| Name | Type | Description |
|
|
611
|
+
| --- | --- | --- |
|
|
612
|
+
| file | <code>StringSetting</code> | The name of the output documentation markdown file. |
|
|
613
|
+
| from | <code>StringSetting</code> | Location of files to use for compiling documentation into the readme. |
|
|
614
|
+
| options | <code>ArrayableSetting</code> | Options for formatting the output readme. |
|
|
615
|
+
| template | <code>StringSetting</code> | The file which will be pre-fixed to your README.md output. |
|
|
616
|
+
| to | <code>StringSetting</code> | The directory to output the readme file in. |
|
|
617
|
+
|
|
618
|
+
<a name="module_gulpConfig..SassConfig"></a>
|
|
619
|
+
|
|
620
|
+
### gulpConfig~SassConfig : <code>Object.<string, Setting></code>
|
|
621
|
+
Configurations to compile and copy the sass files into css.
|
|
622
|
+
|
|
623
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
624
|
+
**Properties**
|
|
625
|
+
|
|
626
|
+
| Name | Type | Description |
|
|
627
|
+
| --- | --- | --- |
|
|
628
|
+
| enabled | <code>BooleanSetting</code> | Toggle SASS to CSS process on. |
|
|
629
|
+
| from | <code>StringSetting</code> | The pattern for finding all sass files. |
|
|
630
|
+
| path | <code>StringSetting</code> | The directory were sass files will be stored. |
|
|
631
|
+
| to | <code>StringSetting</code> | The destination path for where generated CSS (from SASS files) should go. |
|
|
632
|
+
|
|
633
|
+
<a name="module_gulpConfig..TestConfig"></a>
|
|
634
|
+
|
|
635
|
+
### gulpConfig~TestConfig : <code>Object.<string, Setting></code>
|
|
636
|
+
Configurations for running the test suite.
|
|
637
|
+
|
|
638
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
639
|
+
**Properties**
|
|
640
|
+
|
|
641
|
+
| Name | Type | Description |
|
|
642
|
+
| --- | --- | --- |
|
|
643
|
+
| options | <code>JestTestFlags</code> | Additional flags for programmatically running Jest Cli. |
|
|
644
|
+
| path | <code>ArrayableSetting</code> | The directory where Jest test files are stored. By default, stored as *.test.js adjacent to the files they are testing. |
|
|
645
|
+
| watch | <code>ArrayableSetting</code> | The search pattern for watching files for changes. |
|
|
646
|
+
|
|
647
|
+
<a name="module_gulpConfig..TsConfig"></a>
|
|
648
|
+
|
|
649
|
+
### gulpConfig~TsConfig : <code>Object.<string, Setting></code>
|
|
650
|
+
Configurations for compiling typescript into JS files.
|
|
651
|
+
|
|
652
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
653
|
+
**Properties**
|
|
654
|
+
|
|
655
|
+
| Name | Type | Description |
|
|
656
|
+
| --- | --- | --- |
|
|
657
|
+
| config | <code>FlagStringSetting</code> | The path the tsconfig file for running typescript or false if no ts file given. |
|
|
658
|
+
| enabled | <code>BooleanSetting</code> | Toggle usage of typescript parsing. |
|
|
659
|
+
| from | <code>StringSetting</code> | Pattern for finding the TypeScript files. |
|
|
660
|
+
| to | <code>StringSetting</code> | Directory where parsed typescript files go. |
|
|
661
|
+
|
|
662
|
+
<a name="module_gulpConfig..Configurations"></a>
|
|
663
|
+
|
|
664
|
+
### gulpConfig~Configurations : <code>Object.<string, Setting></code>
|
|
665
|
+
A set of Configurations options defined by Settings.
|
|
666
|
+
|
|
667
|
+
**Kind**: inner typedef of [<code>gulpConfig</code>](#module_gulpConfig)
|
|
668
|
+
**Properties**
|
|
669
|
+
|
|
670
|
+
| Name | Type | Description |
|
|
671
|
+
| --- | --- | --- |
|
|
672
|
+
| browser | <code>BrowserConfig</code> | Browser bundling configuration group. |
|
|
673
|
+
| cleanPaths | <code>ArrayableSetting</code> | The paths for directories to delete before build. |
|
|
674
|
+
| dist | <code>DistConfig</code> | Distribution file generation configuration group. |
|
|
675
|
+
| fonts | <code>FontConfig</code> | Fonts copy configuration group. |
|
|
676
|
+
| images | <code>ImageConfig</code> | Minify and copy the images configuration. |
|
|
677
|
+
| readme | <code>ReadmeConfig</code> | Build readme files configuration. |
|
|
678
|
+
| rootPath | <code>StringSetting</code> | Base directory of the project. |
|
|
679
|
+
| sass | <code>SassConfig</code> | Compile CSS from SASS configuration. |
|
|
680
|
+
| srcPath | <code>StringSetting</code> | The directory where your source files are stored (the files you manually created). |
|
|
681
|
+
| test | <code>TestConfig</code> | Run test suite configuration. |
|
|
682
|
+
| typescript | <code>TsConfig</code> | Compile from typescript configuration. |
|
|
683
|
+
|
package/dist/bundle.js
CHANGED
|
@@ -13,8 +13,24 @@ function _interopRequireWildcard (e, t) { if (typeof WeakMap === 'function') var
|
|
|
13
13
|
function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
|
|
14
14
|
/**
|
|
15
15
|
* Starting at the distribution entry point, bundle all the files into a single file and store them in the specified output directory.
|
|
16
|
+
*
|
|
17
|
+
* Two escape hatches from browser.config.json keep an unwanted dependency (or a dependency's dependency) out of the
|
|
18
|
+
* bundle: 'ignore' replaces it with an empty object (safe when your code never actually calls into it - for example
|
|
19
|
+
* a library's default option value you always override with your own) and 'exclude' leaves it out entirely (your
|
|
20
|
+
* code must not require it, or provide it another way, such as a separate script tag).
|
|
16
21
|
* @memberOf module:js-build-tools
|
|
17
22
|
* @returns {stream.Stream}
|
|
18
23
|
*/
|
|
19
|
-
const bundle = () =>
|
|
24
|
+
const bundle = () => {
|
|
25
|
+
const bundler = (0, _browserify.default)(gulpConfig.get('dist.main'))
|
|
26
|
+
const ignore = gulpConfig.get('browser.ignore')
|
|
27
|
+
const exclude = gulpConfig.get('browser.exclude')
|
|
28
|
+
if (ignore && ignore.length) {
|
|
29
|
+
bundler.ignore(ignore)
|
|
30
|
+
}
|
|
31
|
+
if (exclude && exclude.length) {
|
|
32
|
+
bundler.exclude(exclude)
|
|
33
|
+
}
|
|
34
|
+
return bundler.bundle().pipe((0, _vinylSourceStream.default)(`${gulpConfig.get('browser.name')}.js`)).pipe((0, _gulp.dest)(gulpConfig.get('browser.to')))
|
|
35
|
+
}
|
|
20
36
|
exports.bundle = bundle
|
package/dist/bundle.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.bundle=void 0;var _browserify=_interopRequireDefault(require("browserify")),_gulp=require("gulp"),gulpConfig=_interopRequireWildcard(require("../gulp.config.js")),_vinylSourceStream=_interopRequireDefault(require("vinyl-source-stream"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,u=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var i,
|
|
1
|
+
"use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.bundle=void 0;var _browserify=_interopRequireDefault(require("browserify")),_gulp=require("gulp"),gulpConfig=_interopRequireWildcard(require("../gulp.config.js")),_vinylSourceStream=_interopRequireDefault(require("vinyl-source-stream"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,u=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var n,i,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(n=r?u:t){if(n.has(e))return n.get(e);n.set(e,o)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((i=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(i.get||i.set)?n(o,r,i):o[r]=e[r]);return o})(e,r)}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const bundle=()=>{const e=(0,_browserify.default)(gulpConfig.get("dist.main")),r=gulpConfig.get("browser.ignore"),t=gulpConfig.get("browser.exclude");return r&&r.length&&e.ignore(r),t&&t.length&&e.exclude(t),e.bundle().pipe((0,_vinylSourceStream.default)(`${gulpConfig.get("browser.name")}.js`)).pipe((0,_gulp.dest)(gulpConfig.get("browser.to")))};exports.bundle=bundle;
|
package/dist/partials/tsFor.js
CHANGED
|
@@ -4,11 +4,11 @@ require("core-js/modules/esnext.weak-map.delete-all.js");
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.tsFor = void 0;
|
|
7
|
+
exports.tsFor = exports.loadTypescript = void 0;
|
|
8
8
|
var _gulp = require("gulp");
|
|
9
9
|
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
10
10
|
var gulpConfig = _interopRequireWildcard(require("../../gulp.config.js"));
|
|
11
|
-
var
|
|
11
|
+
var _nodeModule = require("node:module");
|
|
12
12
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
14
|
// gulp-ts-compile ships ESM-only (no CJS build - see its own package.json) since it's meant to be consumed by
|
|
@@ -27,6 +27,27 @@ const importGulpTsCompile = new Function('return import(\'gulp-ts-compile\')');
|
|
|
27
27
|
* @param {import('node:stream').Stream} stream
|
|
28
28
|
* @returns {Promise<void>}
|
|
29
29
|
*/
|
|
30
|
+
const installHint = 'Install it in your project with: npm install --save-dev typescript';
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Load the project's own copy of TypeScript (an optional peer dependency, only needed when the typescript task is
|
|
34
|
+
* enabled) from the project being built, so projects which do not use TypeScript never need it installed.
|
|
35
|
+
* @memberOf module:partials
|
|
36
|
+
* @param {string} [projectPath=process.cwd()] The folder of the project (which has the package.json) being built.
|
|
37
|
+
* @returns {Object} The TypeScript compiler API module.
|
|
38
|
+
* @throws {Error} With install instructions when typescript is not installed.
|
|
39
|
+
*/
|
|
40
|
+
const loadTypescript = (projectPath = process.cwd()) => {
|
|
41
|
+
try {
|
|
42
|
+
return (0, _nodeModule.createRequire)(_nodePath.default.join(projectPath, 'package.json'))('typescript');
|
|
43
|
+
} catch (error) {
|
|
44
|
+
if (error.code === 'MODULE_NOT_FOUND' && /Cannot find module 'typescript'/.test(error.message)) {
|
|
45
|
+
throw new Error(`The typescript task needs the optional peer dependency typescript, which is not installed. ${installHint}`);
|
|
46
|
+
}
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
exports.loadTypescript = loadTypescript;
|
|
30
51
|
const streamToPromise = stream => new Promise((resolve, reject) => {
|
|
31
52
|
stream.on('finish', resolve);
|
|
32
53
|
stream.on('error', reject);
|
|
@@ -41,9 +62,9 @@ const streamToPromise = stream => new Promise((resolve, reject) => {
|
|
|
41
62
|
* @param {string} configPath - Path to a tsconfig.json file.
|
|
42
63
|
* @returns {import('typescript').CompilerOptions}
|
|
43
64
|
*/
|
|
44
|
-
const readCompilerOptions = configPath => {
|
|
45
|
-
const configFile =
|
|
46
|
-
const parsedConfig =
|
|
65
|
+
const readCompilerOptions = (ts, configPath) => {
|
|
66
|
+
const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
|
|
67
|
+
const parsedConfig = ts.parseJsonConfigFileContent(configFile.config, ts.sys, _nodePath.default.dirname(configPath));
|
|
47
68
|
return parsedConfig.options;
|
|
48
69
|
};
|
|
49
70
|
|
|
@@ -66,16 +87,17 @@ const tsFor = (srcPath = gulpConfig.get('typescript.from'), distPath = gulpConfi
|
|
|
66
87
|
if (gulpConfig.get('typescript.enabled') === false) {
|
|
67
88
|
return () => {};
|
|
68
89
|
}
|
|
90
|
+
const ts = loadTypescript();
|
|
69
91
|
const configPath = gulpConfig.get('typescript.config');
|
|
70
92
|
// When no tsconfig.json is configured, target/module are pinned explicitly rather than left for TypeScript's
|
|
71
93
|
// own compiler defaults - those defaults have already shifted once across a TypeScript version bump in this
|
|
72
94
|
// project's own history (silently changing whether output keeps `const`/`let` or downlevels to `var`), and
|
|
73
95
|
// pinning them keeps this task's output stable across future TypeScript upgrades too. ES5/CommonJS matches
|
|
74
96
|
// what the downstream babel/browserify bundling pipeline has always assumed it receives.
|
|
75
|
-
const compilerOptions = configPath ? readCompilerOptions(configPath) : {
|
|
97
|
+
const compilerOptions = configPath ? readCompilerOptions(ts, configPath) : {
|
|
76
98
|
declaration: true,
|
|
77
|
-
target:
|
|
78
|
-
module:
|
|
99
|
+
target: ts.ScriptTarget.ES5,
|
|
100
|
+
module: ts.ModuleKind.CommonJS,
|
|
79
101
|
esModuleInterop: false
|
|
80
102
|
};
|
|
81
103
|
// Accepts gulp's own callback-style task convention (an optional `done`, called once finished) rather than
|
package/functions/bundle.mjs
CHANGED
|
@@ -5,10 +5,26 @@ import source from 'vinyl-source-stream'
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Starting at the distribution entry point, bundle all the files into a single file and store them in the specified output directory.
|
|
8
|
+
*
|
|
9
|
+
* Two escape hatches from browser.config.json keep an unwanted dependency (or a dependency's dependency) out of the
|
|
10
|
+
* bundle: 'ignore' replaces it with an empty object (safe when your code never actually calls into it - for example
|
|
11
|
+
* a library's default option value you always override with your own) and 'exclude' leaves it out entirely (your
|
|
12
|
+
* code must not require it, or provide it another way, such as a separate script tag).
|
|
8
13
|
* @memberOf module:js-build-tools
|
|
9
14
|
* @returns {stream.Stream}
|
|
10
15
|
*/
|
|
11
|
-
export const bundle = () =>
|
|
12
|
-
.
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
export const bundle = () => {
|
|
17
|
+
const bundler = browserify(gulpConfig.get('dist.main'))
|
|
18
|
+
const ignore = gulpConfig.get('browser.ignore')
|
|
19
|
+
const exclude = gulpConfig.get('browser.exclude')
|
|
20
|
+
if (ignore && ignore.length) {
|
|
21
|
+
bundler.ignore(ignore)
|
|
22
|
+
}
|
|
23
|
+
if (exclude && exclude.length) {
|
|
24
|
+
bundler.exclude(exclude)
|
|
25
|
+
}
|
|
26
|
+
return bundler
|
|
27
|
+
.bundle()
|
|
28
|
+
.pipe(source(`${gulpConfig.get('browser.name')}.js`))
|
|
29
|
+
.pipe(dest(gulpConfig.get('browser.to')))
|
|
30
|
+
}
|
|
@@ -67,3 +67,77 @@ describe('bundle', () => {
|
|
|
67
67
|
})
|
|
68
68
|
})
|
|
69
69
|
})
|
|
70
|
+
|
|
71
|
+
describe('bundle ignore / exclude', () => {
|
|
72
|
+
const optionalDepMarker = 'MARKER_FROM_THE_OPTIONAL_DEPENDENCY_CODE'
|
|
73
|
+
|
|
74
|
+
beforeEach(() => {
|
|
75
|
+
const tempDir = gulpConfig.get('rootPath')
|
|
76
|
+
const depDir = `${tempDir}node_modules/optional-dep`
|
|
77
|
+
fs.mkdirSync(depDir, { recursive: true })
|
|
78
|
+
fs.writeFileSync(`${depDir}/package.json`, JSON.stringify({ name: 'optional-dep', main: 'index.js' }))
|
|
79
|
+
fs.writeFileSync(`${depDir}/index.js`, `module.exports = '${optionalDepMarker}'\n`)
|
|
80
|
+
const distPath = gulpConfig.get('dist.to')
|
|
81
|
+
const mainFile = gulpConfig.get('dist.main')
|
|
82
|
+
fs.mkdirSync(distPath, { recursive: true })
|
|
83
|
+
// Only reached as a fallback for an option the caller always overrides, the way css-select falls back to its
|
|
84
|
+
// own default adapter (domutils) unless one is given - exactly the case ignore / exclude exist for.
|
|
85
|
+
fs.writeFileSync(`${mainFile}.js`, 'const optionalDep = require(\'optional-dep\')\n\nmodule.exports = (given) => given || optionalDep\n')
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
test('without ignore or exclude, the dependency is bundled', done => {
|
|
89
|
+
const destPath = gulpConfig.get('browser.to')
|
|
90
|
+
const bundledFile = `${destPath}/${gulpConfig.get('browser.name')}.js`
|
|
91
|
+
expect.assertions(1)
|
|
92
|
+
bundle()
|
|
93
|
+
.on('finish', () => {
|
|
94
|
+
expect(fs.readFileSync(bundledFile).toString()).toContain(optionalDepMarker)
|
|
95
|
+
done()
|
|
96
|
+
})
|
|
97
|
+
.on('error', error => done(error))
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
test('ignore replaces the dependency with an empty object, but the bundle still finishes', done => {
|
|
101
|
+
gulpConfig.set('browser.ignore', ['optional-dep'])
|
|
102
|
+
const destPath = gulpConfig.get('browser.to')
|
|
103
|
+
const bundledFile = `${destPath}/${gulpConfig.get('browser.name')}.js`
|
|
104
|
+
expect.assertions(2)
|
|
105
|
+
bundle()
|
|
106
|
+
.on('finish', () => {
|
|
107
|
+
const bundledContents = fs.readFileSync(bundledFile).toString()
|
|
108
|
+
// The ignored module is still in the bundle (as an empty stub, so requiring it by name still resolves) -
|
|
109
|
+
// it just no longer has the real code that would have pulled in the marker
|
|
110
|
+
expect(bundledContents).toContain('optional-dep')
|
|
111
|
+
expect(bundledContents).not.toContain(optionalDepMarker)
|
|
112
|
+
done()
|
|
113
|
+
})
|
|
114
|
+
.on('error', error => done(error))
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
test('exclude leaves the dependency out of the bundle entirely', done => {
|
|
118
|
+
gulpConfig.set('browser.exclude', ['optional-dep'])
|
|
119
|
+
const destPath = gulpConfig.get('browser.to')
|
|
120
|
+
const bundledFile = `${destPath}/${gulpConfig.get('browser.name')}.js`
|
|
121
|
+
expect.assertions(1)
|
|
122
|
+
bundle()
|
|
123
|
+
.on('finish', () => {
|
|
124
|
+
expect(fs.readFileSync(bundledFile).toString()).not.toContain(optionalDepMarker)
|
|
125
|
+
done()
|
|
126
|
+
})
|
|
127
|
+
.on('error', error => done(error))
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
test('a single string is accepted the same as a one item array', done => {
|
|
131
|
+
gulpConfig.set('browser.ignore', 'optional-dep')
|
|
132
|
+
const destPath = gulpConfig.get('browser.to')
|
|
133
|
+
const bundledFile = `${destPath}/${gulpConfig.get('browser.name')}.js`
|
|
134
|
+
expect.assertions(1)
|
|
135
|
+
bundle()
|
|
136
|
+
.on('finish', () => {
|
|
137
|
+
expect(fs.readFileSync(bundledFile).toString()).not.toContain(optionalDepMarker)
|
|
138
|
+
done()
|
|
139
|
+
})
|
|
140
|
+
.on('error', error => done(error))
|
|
141
|
+
})
|
|
142
|
+
})
|
|
143
|
+
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { dest, src } from 'gulp'
|
|
2
2
|
import path from 'node:path'
|
|
3
3
|
import * as gulpConfig from '../../gulp.config.mjs'
|
|
4
|
-
import
|
|
4
|
+
import { createRequire } from 'node:module'
|
|
5
5
|
|
|
6
6
|
// gulp-ts-compile ships ESM-only (no CJS build - see its own package.json) since it's meant to be consumed by
|
|
7
7
|
// gulpfiles running under a real ESM loader, same as this project's own gulpfile.mjs does. This project also
|
|
@@ -19,6 +19,27 @@ const importGulpTsCompile = new Function('return import(\'gulp-ts-compile\')')
|
|
|
19
19
|
* @param {import('node:stream').Stream} stream
|
|
20
20
|
* @returns {Promise<void>}
|
|
21
21
|
*/
|
|
22
|
+
const installHint = 'Install it in your project with: npm install --save-dev typescript'
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Load the project's own copy of TypeScript (an optional peer dependency, only needed when the typescript task is
|
|
26
|
+
* enabled) from the project being built, so projects which do not use TypeScript never need it installed.
|
|
27
|
+
* @memberOf module:partials
|
|
28
|
+
* @param {string} [projectPath=process.cwd()] The folder of the project (which has the package.json) being built.
|
|
29
|
+
* @returns {Object} The TypeScript compiler API module.
|
|
30
|
+
* @throws {Error} With install instructions when typescript is not installed.
|
|
31
|
+
*/
|
|
32
|
+
export const loadTypescript = (projectPath = process.cwd()) => {
|
|
33
|
+
try {
|
|
34
|
+
return createRequire(path.join(projectPath, 'package.json'))('typescript')
|
|
35
|
+
} catch (error) {
|
|
36
|
+
if (error.code === 'MODULE_NOT_FOUND' && /Cannot find module 'typescript'/.test(error.message)) {
|
|
37
|
+
throw new Error(`The typescript task needs the optional peer dependency typescript, which is not installed. ${installHint}`)
|
|
38
|
+
}
|
|
39
|
+
throw error
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
22
43
|
const streamToPromise = (stream) => new Promise((resolve, reject) => {
|
|
23
44
|
stream.on('finish', resolve)
|
|
24
45
|
stream.on('error', reject)
|
|
@@ -33,7 +54,7 @@ const streamToPromise = (stream) => new Promise((resolve, reject) => {
|
|
|
33
54
|
* @param {string} configPath - Path to a tsconfig.json file.
|
|
34
55
|
* @returns {import('typescript').CompilerOptions}
|
|
35
56
|
*/
|
|
36
|
-
const readCompilerOptions = (configPath) => {
|
|
57
|
+
const readCompilerOptions = (ts, configPath) => {
|
|
37
58
|
const configFile = ts.readConfigFile(configPath, ts.sys.readFile)
|
|
38
59
|
const parsedConfig = ts.parseJsonConfigFileContent(configFile.config, ts.sys, path.dirname(configPath))
|
|
39
60
|
return parsedConfig.options
|
|
@@ -60,6 +81,7 @@ export const tsFor = (
|
|
|
60
81
|
if (gulpConfig.get('typescript.enabled') === false) {
|
|
61
82
|
return () => {}
|
|
62
83
|
}
|
|
84
|
+
const ts = loadTypescript()
|
|
63
85
|
const configPath = gulpConfig.get('typescript.config')
|
|
64
86
|
// When no tsconfig.json is configured, target/module are pinned explicitly rather than left for TypeScript's
|
|
65
87
|
// own compiler defaults - those defaults have already shifted once across a TypeScript version bump in this
|
|
@@ -67,7 +89,7 @@ export const tsFor = (
|
|
|
67
89
|
// pinning them keeps this task's output stable across future TypeScript upgrades too. ES5/CommonJS matches
|
|
68
90
|
// what the downstream babel/browserify bundling pipeline has always assumed it receives.
|
|
69
91
|
const compilerOptions = configPath
|
|
70
|
-
? readCompilerOptions(configPath)
|
|
92
|
+
? readCompilerOptions(ts, configPath)
|
|
71
93
|
: { declaration: true, target: ts.ScriptTarget.ES5, module: ts.ModuleKind.CommonJS, esModuleInterop: false }
|
|
72
94
|
// Accepts gulp's own callback-style task convention (an optional `done`, called once finished) rather than
|
|
73
95
|
// just returning a Promise, since callers may invoke the returned function directly with a callback instead
|
|
@@ -3,7 +3,7 @@ import { Transform, PassThrough } from 'node:stream'
|
|
|
3
3
|
import ts from 'typescript'
|
|
4
4
|
import File from 'vinyl'
|
|
5
5
|
import * as setUp from '../test-helpers/setUp.mjs'
|
|
6
|
-
import { tsFor } from './tsFor.mjs'
|
|
6
|
+
import { tsFor, loadTypescript } from './tsFor.mjs'
|
|
7
7
|
import { countMatches } from 'test-filesystem'
|
|
8
8
|
|
|
9
9
|
setUp.setDefaults('test-ts-for')
|
|
@@ -75,3 +75,13 @@ describe('tsFor', () => {
|
|
|
75
75
|
expect(result).toBeInstanceOf(Function)
|
|
76
76
|
})
|
|
77
77
|
})
|
|
78
|
+
|
|
79
|
+
describe('loadTypescript', () => {
|
|
80
|
+
test('loads the typescript of the project being built', () => {
|
|
81
|
+
expect(loadTypescript().version).toBe(ts.version)
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
test('explains how to install typescript when the project does not have it', () => {
|
|
85
|
+
expect(() => loadTypescript('/')).toThrow(/optional peer dependency typescript.*npm install --save-dev typescript/)
|
|
86
|
+
})
|
|
87
|
+
})
|
package/gulp.config.mjs
CHANGED
|
@@ -52,6 +52,14 @@ import { fileExists } from 'test-filesystem'
|
|
|
52
52
|
* @property {StringSetting} from - The name to use for the browser-bundled output file (.js will be appended).
|
|
53
53
|
* @property {StringSetting} name - The search pattern used for retrieving compiled distribution files.
|
|
54
54
|
* @property {StringSetting} to - The output directory for browser-bundled files.
|
|
55
|
+
* @property {ArrayableSetting} ignore - Module names or file paths which resolve to an empty object ({}) in the
|
|
56
|
+
* bundle instead of their real contents. For a dependency which is only reached because it is the default value of
|
|
57
|
+
* an option you always override (for example a selector engine's default DOM adapter, when you always pass your
|
|
58
|
+
* own), this keeps it (and anything only it requires) out of the bundle, as long as your code never actually reaches
|
|
59
|
+
* the real module by not overriding that option. See browserify's b.ignore(file).
|
|
60
|
+
* @property {ArrayableSetting} exclude - Module names or file paths left out of the bundle entirely; requiring one at
|
|
61
|
+
* runtime throws unless something else provides it (for example a script tag loading it separately). See
|
|
62
|
+
* browserify's b.exclude(file).
|
|
55
63
|
*/
|
|
56
64
|
/**
|
|
57
65
|
* Configurations for building the node distribution files.
|
|
@@ -130,7 +138,9 @@ import { readFileSync } from 'fs'
|
|
|
130
138
|
const setDefaults = {
|
|
131
139
|
browser: {
|
|
132
140
|
enabled: true,
|
|
141
|
+
exclude: [],
|
|
133
142
|
from: 'dist/**/*.js',
|
|
143
|
+
ignore: [],
|
|
134
144
|
name: 'default',
|
|
135
145
|
to: 'browser',
|
|
136
146
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "js-build-tools",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.2.0",
|
|
4
4
|
"description": "Standardised build process with gulp.",
|
|
5
5
|
"main": "gulpfile.base.js",
|
|
6
6
|
"exports": {
|
|
@@ -77,11 +77,15 @@
|
|
|
77
77
|
"vinyl-source-stream": "^2.0.0"
|
|
78
78
|
},
|
|
79
79
|
"peerDependencies": {
|
|
80
|
-
"gulp-imagemin": ">=9.0.0"
|
|
80
|
+
"gulp-imagemin": ">=9.0.0",
|
|
81
|
+
"typescript": ">=5.0.0 <7.0.0"
|
|
81
82
|
},
|
|
82
83
|
"peerDependenciesMeta": {
|
|
83
84
|
"gulp-imagemin": {
|
|
84
85
|
"optional": true
|
|
86
|
+
},
|
|
87
|
+
"typescript": {
|
|
88
|
+
"optional": true
|
|
85
89
|
}
|
|
86
90
|
},
|
|
87
91
|
"files": [
|