-
Notifications
You must be signed in to change notification settings - Fork 602
/
rush.json
1338 lines (1299 loc) · 48.7 KB
/
rush.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
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
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/**
* This is the main configuration file for Rush.
* For full documentation, please see https://rushjs.io
*/
{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush.schema.json",
/**
* (Required) This specifies the version of the Rush engine to be used in this repo.
* Rush's "version selector" feature ensures that the globally installed tool will
* behave like this release, regardless of which version is installed globally.
*
* The common/scripts/install-run-rush.js automation script also uses this version.
*
* NOTE: If you upgrade to a new major version of Rush, you should replace the "v5"
* path segment in the "$schema" field for all your Rush config files. This will ensure
* correct error-underlining and tab-completion for editors such as VS Code.
*/
"rushVersion": "5.141.1",
/**
* The next field selects which package manager should be installed and determines its version.
* Rush installs its own local copy of the package manager to ensure that your build process
* is fully isolated from whatever tools are present in the local environment.
*
* Specify one of: "pnpmVersion", "npmVersion", or "yarnVersion". See the Rush documentation
* for details about these alternatives.
*/
"pnpmVersion": "8.15.9",
// "npmVersion": "6.14.15",
// "yarnVersion": "1.9.4",
/**
* Older releases of the Node.js engine may be missing features required by your system.
* Other releases may have bugs. In particular, the "latest" version will not be a
* Long Term Support (LTS) version and is likely to have regressions.
*
* Specify a SemVer range to ensure developers use a Node.js version that is appropriate
* for your repo.
*
* LTS schedule: https://nodejs.org/en/about/releases/
* LTS versions: https://nodejs.org/en/download/releases/
*/
"nodeSupportedVersionRange": ">=18.15.0 <19.0.0 || >=20.9.0 <21.0.0",
/**
* If the version check above fails, Rush will display a message showing the current
* node version and the supported version range. You can use this setting to provide
* additional instructions that will display below the warning, if there's a specific
* tool or script you'd like the user to use to get in line with the expected version.
*/
// "nodeSupportedVersionInstructions": "Run 'nvs use' to switch to the expected node version.",
/**
* Odd-numbered major versions of Node.js are experimental. Even-numbered releases
* spend six months in a stabilization period before the first Long Term Support (LTS) version.
* For example, 8.9.0 was the first LTS version of Node.js 8. Pre-LTS versions are not recommended
* for production usage because they frequently have bugs. They may cause Rush itself
* to malfunction.
*
* Rush normally prints a warning if it detects a pre-LTS Node.js version. If you are testing
* pre-LTS versions in preparation for supporting the first LTS version, you can use this setting
* to disable Rush's warning.
*/
// "suppressNodeLtsWarning": false,
/**
* Large monorepos can become intimidating for newcomers if project folder paths don't follow
* a consistent and recognizable pattern. When the system allows nested folder trees,
* we've found that teams will often use subfolders to create islands that isolate
* their work from others ("shipping the org"). This hinders collaboration and code sharing.
*
* The Rush developers recommend a "category folder" model, where buildable project folders
* must always be exactly two levels below the repo root. The parent folder acts as the category.
* This provides a basic facility for grouping related projects (e.g. "apps", "libraries",
* "tools", "prototypes") while still encouraging teams to organize their projects into
* a unified taxonomy. Limiting to 2 levels seems very restrictive at first, but if you have
* 20 categories and 20 projects in each category, this scheme can easily accommodate hundreds
* of projects. In practice, you will find that the folder hierarchy needs to be rebalanced
* occasionally, but if that's painful, it's a warning sign that your development style may
* discourage refactoring. Reorganizing the categories should be an enlightening discussion
* that brings people together, and maybe also identifies poor coding practices (e.g. file
* references that reach into other project's folders without using Node.js module resolution).
*
* The defaults are projectFolderMinDepth=1 and projectFolderMaxDepth=2.
*
* To remove these restrictions, you could set projectFolderMinDepth=1
* and set projectFolderMaxDepth to a large number.
*/
"projectFolderMinDepth": 2,
"projectFolderMaxDepth": 2,
/**
* Today the npmjs.com registry enforces fairly strict naming rules for packages, but in the early
* days there was no standard and hardly any enforcement. A few large legacy projects are still using
* nonstandard package names, and private registries sometimes allow it. Set "allowMostlyStandardPackageNames"
* to true to relax Rush's enforcement of package names. This allows upper case letters and in the future may
* relax other rules, however we want to minimize these exceptions. Many popular tools use certain punctuation
* characters as delimiters, based on the assumption that they will never appear in a package name; thus if we relax
* the rules too much it is likely to cause very confusing malfunctions.
*
* The default value is false.
*/
// "allowMostlyStandardPackageNames": true,
/**
* This feature helps you to review and approve new packages before they are introduced
* to your monorepo. For example, you may be concerned about licensing, code quality,
* performance, or simply accumulating too many libraries with overlapping functionality.
* The approvals are tracked in two config files "browser-approved-packages.json"
* and "nonbrowser-approved-packages.json". See the Rush documentation for details.
*/
"approvedPackagesPolicy": {
/**
* The review categories allow you to say for example "This library is approved for usage
* in prototypes, but not in production code."
*
* Each project can be associated with one review category, by assigning the "reviewCategory" field
* in the "projects" section of rush.json. The approval is then recorded in the files
* "common/config/rush/browser-approved-packages.json" and "nonbrowser-approved-packages.json"
* which are automatically generated during "rush update".
*
* Designate categories with whatever granularity is appropriate for your review process,
* or you could just have a single category called "default".
*/
"reviewCategories": [
"libraries", // library projects that ship
"tests", // non-shipping test projects
"vscode-extensions" // vscode extensions
],
/**
* A list of NPM package scopes that will be excluded from review.
* We recommend to exclude TypeScript typings (the "@types" scope), because
* if the underlying package was already approved, this would imply that the typings
* are also approved.
*/
"ignoredNpmScopes": ["@types"]
},
/**
* If you use Git as your version control system, this section has some additional
* optional features you can use.
*/
"gitPolicy": {
/**
* Work at a big company? Tired of finding Git commits at work with unprofessional Git
* emails such as "[email protected]"? Rush can validate people's Git email address
* before they get started.
*
* Define a list of regular expressions describing allowable e-mail patterns for Git commits.
* They are case-insensitive anchored JavaScript RegExps. Example: ".*@example\.com"
*
* IMPORTANT: Because these are regular expressions encoded as JSON string literals,
* RegExp escapes need two backslashes, and ordinary periods should be "\\.".
*/
"allowedEmailRegExps": ["[^@]+@users\\.noreply\\.github\\.com"],
/**
* When Rush reports that the address is malformed, the notice can include an example
* of a recommended email. Make sure it conforms to one of the allowedEmailRegExps
* expressions.
*/
"sampleEmail": "[email protected]"
/**
* The commit message to use when committing changes during 'rush publish'.
*
* For example, if you want to prevent these commits from triggering a CI build,
* you might configure your system's trigger to look for a special string such as "[skip-ci]"
* in the commit message, and then customize Rush's message to contain that string.
*/
// "versionBumpCommitMessage": "Bump versions [skip ci]",
/**
* The commit message to use when committing changes during 'rush version'.
*
* For example, if you want to prevent these commits from triggering a CI build,
* you might configure your system's trigger to look for a special string such as "[skip-ci]"
* in the commit message, and then customize Rush's message to contain that string.
*/
// "changeLogUpdateCommitMessage": "Update changelogs [skip ci]",
/**
* The commit message to use when commiting changefiles during 'rush change --commit'
*
* If no commit message is set it will default to 'Rush change'
*/
// "changefilesCommitMessage": "Rush change"
},
"repository": {
/**
* The URL of this Git repository, used by "rush change" to determine the base branch for your PR.
*
* The "rush change" command needs to determine which files are affected by your PR diff.
* If you merged or cherry-picked commits from the main branch into your PR branch, those commits
* should be excluded from this diff (since they belong to some other PR). In order to do that,
* Rush needs to know where to find the base branch for your PR. This information cannot be
* determined from Git alone, since the "pull request" feature is not a Git concept. Ideally
* Rush would use a vendor-specific protocol to query the information from GitHub, Azure DevOps, etc.
* But to keep things simple, "rush change" simply assumes that your PR is against the "main" branch
* of the Git remote indicated by the repository.url setting in rush.json. If you are working in
* a GitHub "fork" of the real repo, this setting will be different from the repository URL of your
* your PR branch, and in this situation "rush change" will also automatically invoke "git fetch"
* to retrieve the latest activity for the remote main branch.
*/
"urls": ["https://github.com/microsoft/rushstack.git"],
/**
* The default branch name. This tells "rush change" which remote branch to compare against.
* The default value is "main"
*/
"defaultBranch": "main"
/**
* The default remote. This tells "rush change" which remote to compare against if the remote URL is
* not set or if a remote matching the provided remote URL is not found.
*/
// "defaultRemote": "origin"
},
/**
* Event hooks are customized script actions that Rush executes when specific events occur
*/
"eventHooks": {
/**
* A list of shell commands to run before "rush install" or "rush update" starts installation
*/
"preRushInstall": [
// "common/scripts/pre-rush-install.js"
],
/**
* A list of shell commands to run after "rush install" or "rush update" finishes installation
*/
"postRushInstall": [],
/**
* A list of shell commands to run before "rush build" or "rush rebuild" starts building
*/
"preRushBuild": [],
/**
* A list of shell commands to run after "rush build" or "rush rebuild" finishes building
*/
"postRushBuild": [],
/**
* A list of shell commands to run before the "rushx" command starts
*/
"preRushx": [],
/**
* A list of shell commands to run after the "rushx" command finishes
*/
"postRushx": []
},
/**
* Rush can collect anonymous telemetry about everyday developer activity such as
* success/failure of installs, builds, and other operations. You can use this to identify
* problems with your toolchain or Rush itself. THIS TELEMETRY IS NOT SHARED WITH MICROSOFT.
* It is written into JSON files in the common/temp folder. It's up to you to write scripts
* that read these JSON files and do something with them. These scripts are typically registered
* in the "eventHooks" section.
*/
// "telemetryEnabled": false,
/**
* Allows creation of hotfix changes. This feature is experimental so it is disabled by default.
* If this is set, 'rush change' only allows a 'hotfix' change type to be specified. This change type
* will be used when publishing subsequent changes from the monorepo.
*/
// "hotfixChangeEnabled": false,
/**
* This is an optional, but recommended, list of allowed tags that can be applied to Rush projects
* using the "tags" setting in this file. This list is useful for preventing mistakes such as misspelling,
* and it also provides a centralized place to document your tags. If "allowedProjectTags" list is
* not specified, then any valid tag is allowed. A tag name must be one or more words
* separated by hyphens or slashes, where a word may contain lowercase ASCII letters, digits,
* ".", and "@" characters.
*/
// "allowedProjectTags": [ "tools", "frontend-team", "1.0.0-release" ],
/**
* (Required) This is the inventory of projects to be managed by Rush.
*
* Rush does not automatically scan for projects using wildcards, for a few reasons:
* 1. Depth-first scans are expensive, particularly when tools need to repeatedly collect the list.
* 2. On a caching CI machine, scans can accidentally pick up files left behind from a previous build.
* 3. It's useful to have a centralized inventory of all projects and their important metadata.
*/
"projects": [
// {
// /**
// * The NPM package name of the project (must match package.json)
// */
// "packageName": "my-app",
//
// /**
// * The path to the project folder, relative to the rush.json config file.
// */
// "projectFolder": "apps/my-app",
//
// /**
// * This field is only used if "subspacesEnabled" is true in subspaces.json.
// * It specifies the subspace that this project belongs to. If omitted, then the
// * project belongs to the "default" subspace.
// */
// // "subspaceName": "my-subspace",
//
// /**
// * An optional category for usage in the "browser-approved-packages.json"
// * and "nonbrowser-approved-packages.json" files. The value must be one of the
// * strings from the "reviewCategories" defined above.
// */
// "reviewCategory": "production",
//
// /**
// * A list of Rush project names that are to be installed from NPM
// * instead of linking to the local project.
// *
// * If a project's package.json specifies a dependency that is another Rush project
// * in the monorepo workspace, normally Rush will locally link its folder instead of
// * installing from NPM. If you are using PNPM workspaces, this is indicated by
// * a SemVer range such as "workspace:^1.2.3". To prevent mistakes, Rush reports
// * an error if the "workspace:" protocol is missing.
// *
// * Locally linking ensures that regressions are caught as early as possible and is
// * a key benefit of monorepos. However there are occasional situations where
// * installing from NPM is needed. A classic example is a cyclic dependency.
// * Imagine three Rush projects: "my-toolchain" depends on "my-tester", which depends
// * on "my-library". Suppose that we add "my-toolchain" to the "devDependencies"
// * of "my-library" so it can be built by our toolchain. This cycle creates
// * a problem -- Rush can't build a project using a not-yet-built dependency.
// * We can solve it by adding "my-toolchain" to the "decoupledLocalDependencies"
// * of "my-library", so it builds using the last published release. Choose carefully
// * which package to decouple; some choices are much easier to manage than others.
// *
// * (In older Rush releases, this setting was called "cyclicDependencyProjects".)
// */
// "decoupledLocalDependencies": [
// // "my-toolchain"
// ],
//
// /**
// * If true, then this project will be ignored by the "rush check" command.
// * The default value is false.
// */
// // "skipRushCheck": false,
//
// /**
// * A flag indicating that changes to this project will be published to npm, which affects
// * the Rush change and publish workflows. The default value is false.
// * NOTE: "versionPolicyName" and "shouldPublish" are alternatives; you cannot specify them both.
// */
// // "shouldPublish": false,
//
// /**
// * Facilitates postprocessing of a project's files prior to publishing.
// *
// * If specified, the "publishFolder" is the relative path to a subfolder of the project folder.
// * The "rush publish" command will publish the subfolder instead of the project folder. The subfolder
// * must contain its own package.json file, which is typically a build output.
// */
// // "publishFolder": "temp/publish",
//
// /**
// * An optional version policy associated with the project. Version policies are defined
// * in "version-policies.json" file. See the "rush publish" documentation for more info.
// * NOTE: "versionPolicyName" and "shouldPublish" are alternatives; you cannot specify them both.
// */
// // "versionPolicyName": "",
//
// /**
// * An optional set of custom tags that can be used to select this project. For example,
// * adding "my-custom-tag" will allow this project to be selected by the
// * command "rush list --only tag:my-custom-tag". The tag name must be one or more words
// * separated by hyphens or slashes, where a word may contain lowercase ASCII letters, digits,
// * ".", and "@" characters.
// */
// // "tags": [ "1.0.0-release", "frontend-team" ]
// },
// "apps" folder (alphabetical order)
{
"packageName": "@microsoft/api-documenter",
"projectFolder": "apps/api-documenter",
"reviewCategory": "libraries",
"shouldPublish": true
},
{
"packageName": "@microsoft/api-extractor",
"projectFolder": "apps/api-extractor",
"reviewCategory": "libraries",
"shouldPublish": true,
"decoupledLocalDependencies": ["@rushstack/heft-node-rig", "@rushstack/heft"]
},
{
"packageName": "@rushstack/heft",
"projectFolder": "apps/heft",
"reviewCategory": "libraries",
"shouldPublish": true,
"decoupledLocalDependencies": ["@rushstack/heft-node-rig", "@rushstack/heft"]
},
{
"packageName": "@rushstack/lockfile-explorer",
"projectFolder": "apps/lockfile-explorer",
"reviewCategory": "libraries",
"shouldPublish": true
},
{
"packageName": "@rushstack/lockfile-explorer-web",
"projectFolder": "apps/lockfile-explorer-web",
"reviewCategory": "libraries"
},
{
"packageName": "@rushstack/rush-themed-ui",
"projectFolder": "libraries/rush-themed-ui",
"reviewCategory": "libraries"
},
{
"packageName": "@rushstack/rundown",
"projectFolder": "apps/rundown",
"reviewCategory": "libraries",
"shouldPublish": true
},
{
"packageName": "@microsoft/rush",
"projectFolder": "apps/rush",
"reviewCategory": "libraries",
"versionPolicyName": "rush"
},
{
"packageName": "@rushstack/trace-import",
"projectFolder": "apps/trace-import",
"reviewCategory": "libraries",
"shouldPublish": true
},
// "build-tests" folder (alphabetical order)
{
"packageName": "api-documenter-test",
"projectFolder": "build-tests/api-documenter-test",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-documenter-scenarios",
"projectFolder": "build-tests/api-documenter-scenarios",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-extractor-d-cts-test",
"projectFolder": "build-tests/api-extractor-d-cts-test",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-extractor-d-mts-test",
"projectFolder": "build-tests/api-extractor-d-mts-test",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-extractor-lib1-test",
"projectFolder": "build-tests/api-extractor-lib1-test",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-extractor-lib2-test",
"projectFolder": "build-tests/api-extractor-lib2-test",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-extractor-lib3-test",
"projectFolder": "build-tests/api-extractor-lib3-test",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-extractor-lib4-test",
"projectFolder": "build-tests/api-extractor-lib4-test",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-extractor-lib5-test",
"projectFolder": "build-tests/api-extractor-lib5-test",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-extractor-scenarios",
"projectFolder": "build-tests/api-extractor-scenarios",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-extractor-test-01",
"projectFolder": "build-tests/api-extractor-test-01",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-extractor-test-02",
"projectFolder": "build-tests/api-extractor-test-02",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-extractor-test-03",
"projectFolder": "build-tests/api-extractor-test-03",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "api-extractor-test-04",
"projectFolder": "build-tests/api-extractor-test-04",
"reviewCategory": "tests",
"shouldPublish": false,
"tags": ["api-extractor-tests"]
},
{
"packageName": "eslint-7-7-test",
"projectFolder": "build-tests/eslint-7-7-test",
"reviewCategory": "tests",
"shouldPublish": false,
"cyclicDependencyProjects": ["@rushstack/eslint-config"]
},
{
"packageName": "eslint-7-11-test",
"projectFolder": "build-tests/eslint-7-11-test",
"reviewCategory": "tests",
"shouldPublish": false,
"cyclicDependencyProjects": ["@rushstack/eslint-config"]
},
{
"packageName": "eslint-7-test",
"projectFolder": "build-tests/eslint-7-test",
"reviewCategory": "tests",
"shouldPublish": false,
"cyclicDependencyProjects": ["@rushstack/eslint-config"]
},
{
"packageName": "eslint-8-test",
"projectFolder": "build-tests/eslint-8-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "eslint-bulk-suppressions-test",
"projectFolder": "build-tests/eslint-bulk-suppressions-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "eslint-bulk-suppressions-test-legacy",
"projectFolder": "build-tests/eslint-bulk-suppressions-test-legacy",
"reviewCategory": "tests",
"shouldPublish": false,
"cyclicDependencyProjects": ["@rushstack/eslint-config"]
},
{
"packageName": "package-extractor-test-01",
"projectFolder": "build-tests/package-extractor-test-01",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "package-extractor-test-02",
"projectFolder": "build-tests/package-extractor-test-02",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "package-extractor-test-03",
"projectFolder": "build-tests/package-extractor-test-03",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "package-extractor-test-04",
"projectFolder": "build-tests/package-extractor-test-04",
"reviewCategory": "tests",
"shouldPublish": false
},
// "build-tests-samples" folder (alphabetical order)
{
"packageName": "heft-node-basic-tutorial",
"projectFolder": "build-tests-samples/heft-node-basic-tutorial",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-node-jest-tutorial",
"projectFolder": "build-tests-samples/heft-node-jest-tutorial",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-node-rig-tutorial",
"projectFolder": "build-tests-samples/heft-node-rig-tutorial",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-serverless-stack-tutorial",
"projectFolder": "build-tests-samples/heft-serverless-stack-tutorial",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-storybook-react-tutorial",
"projectFolder": "build-tests-samples/heft-storybook-react-tutorial",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-storybook-react-tutorial-storykit",
"projectFolder": "build-tests-samples/heft-storybook-react-tutorial-storykit",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-storybook-react-tutorial-app",
"projectFolder": "build-tests-samples/heft-storybook-react-tutorial-app",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-webpack-basic-tutorial",
"projectFolder": "build-tests-samples/heft-webpack-basic-tutorial",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-web-rig-app-tutorial",
"projectFolder": "build-tests-samples/heft-web-rig-app-tutorial",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-web-rig-library-tutorial",
"projectFolder": "build-tests-samples/heft-web-rig-library-tutorial",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "packlets-tutorial",
"projectFolder": "build-tests-samples/packlets-tutorial",
"reviewCategory": "tests",
"shouldPublish": false
},
// "eslint" folder (alphabetical order)
{
"packageName": "@rushstack/eslint-bulk",
"projectFolder": "eslint/eslint-bulk",
"reviewCategory": "libraries",
"shouldPublish": true
},
{
"packageName": "@rushstack/eslint-config",
"projectFolder": "eslint/eslint-config",
"reviewCategory": "libraries",
"shouldPublish": true
},
{
"packageName": "local-eslint-config",
"projectFolder": "eslint/local-eslint-config",
"reviewCategory": "libraries",
"shouldPublish": false
},
{
"packageName": "@rushstack/eslint-patch",
"projectFolder": "eslint/eslint-patch",
"reviewCategory": "libraries",
"shouldPublish": true,
"decoupledLocalDependencies": ["@rushstack/heft-node-rig", "@rushstack/heft"]
},
{
"packageName": "@rushstack/eslint-plugin",
"projectFolder": "eslint/eslint-plugin",
"reviewCategory": "libraries",
"shouldPublish": true,
"decoupledLocalDependencies": ["@rushstack/heft-node-rig", "@rushstack/heft"]
},
{
"packageName": "@rushstack/eslint-plugin-packlets",
"projectFolder": "eslint/eslint-plugin-packlets",
"reviewCategory": "libraries",
"shouldPublish": true,
"decoupledLocalDependencies": ["@rushstack/heft-node-rig", "@rushstack/heft"]
},
{
"packageName": "@rushstack/eslint-plugin-security",
"projectFolder": "eslint/eslint-plugin-security",
"reviewCategory": "libraries",
"shouldPublish": true,
"decoupledLocalDependencies": ["@rushstack/heft-node-rig", "@rushstack/heft"]
},
// heft-* projects
{
"packageName": "heft-copy-files-test",
"projectFolder": "build-tests/heft-copy-files-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-example-plugin-01",
"projectFolder": "build-tests/heft-example-plugin-01",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-example-plugin-02",
"projectFolder": "build-tests/heft-example-plugin-02",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-jest-preset-test",
"projectFolder": "build-tests/heft-jest-preset-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-jest-reporters-test",
"projectFolder": "build-tests/heft-jest-reporters-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-fastify-test",
"projectFolder": "build-tests/heft-fastify-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-minimal-rig-test",
"projectFolder": "build-tests/heft-minimal-rig-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-minimal-rig-usage-test",
"projectFolder": "build-tests/heft-minimal-rig-usage-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-node-everything-test",
"projectFolder": "build-tests/heft-node-everything-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-node-everything-esm-module-test",
"projectFolder": "build-tests/heft-node-everything-esm-module-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-parameter-plugin",
"projectFolder": "build-tests/heft-parameter-plugin",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-parameter-plugin-test",
"projectFolder": "build-tests/heft-parameter-plugin-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-sass-test",
"projectFolder": "build-tests/heft-sass-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-typescript-composite-test",
"projectFolder": "build-tests/heft-typescript-composite-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-typescript-v2-test",
"projectFolder": "build-tests/heft-typescript-v2-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-typescript-v3-test",
"projectFolder": "build-tests/heft-typescript-v3-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-typescript-v4-test",
"projectFolder": "build-tests/heft-typescript-v4-test",
"reviewCategory": "tests",
"shouldPublish": false,
"decoupledLocalDependencies": ["@rushstack/eslint-config"]
},
{
"packageName": "heft-web-rig-library-test",
"projectFolder": "build-tests/heft-web-rig-library-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-webpack4-everything-test",
"projectFolder": "build-tests/heft-webpack4-everything-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "heft-webpack5-everything-test",
"projectFolder": "build-tests/heft-webpack5-everything-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "hashed-folder-copy-plugin-webpack5-test",
"projectFolder": "build-tests/hashed-folder-copy-plugin-webpack5-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "rush-lib-test",
"projectFolder": "build-tests-subspace/rush-lib-test",
"reviewCategory": "tests",
"shouldPublish": false,
"subspaceName": "build-tests-subspace"
},
{
"packageName": "rush-sdk-test",
"projectFolder": "build-tests-subspace/rush-sdk-test",
"reviewCategory": "tests",
"shouldPublish": false,
"subspaceName": "build-tests-subspace"
},
{
"packageName": "typescript-newest-test",
"projectFolder": "build-tests-subspace/typescript-newest-test",
"reviewCategory": "tests",
"shouldPublish": false,
"subspaceName": "build-tests-subspace"
},
{
"packageName": "typescript-v4-test",
"projectFolder": "build-tests-subspace/typescript-v4-test",
"reviewCategory": "tests",
"shouldPublish": false,
"subspaceName": "build-tests-subspace"
},
{
"packageName": "localization-plugin-test-01",
"projectFolder": "build-tests/localization-plugin-test-01",
"reviewCategory": "tests",
"shouldPublish": false,
"decoupledLocalDependencies": ["@rushstack/set-webpack-public-path-plugin"]
},
{
"packageName": "localization-plugin-test-02",
"projectFolder": "build-tests/localization-plugin-test-02",
"reviewCategory": "tests",
"shouldPublish": false,
"decoupledLocalDependencies": ["@rushstack/set-webpack-public-path-plugin"]
},
{
"packageName": "localization-plugin-test-03",
"projectFolder": "build-tests/localization-plugin-test-03",
"reviewCategory": "tests",
"shouldPublish": false,
"decoupledLocalDependencies": ["@rushstack/set-webpack-public-path-plugin"]
},
{
"packageName": "rush-amazon-s3-build-cache-plugin-integration-test",
"projectFolder": "build-tests/rush-amazon-s3-build-cache-plugin-integration-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "rush-lib-declaration-paths-test",
"projectFolder": "build-tests/rush-lib-declaration-paths-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "rush-project-change-analyzer-test",
"projectFolder": "build-tests/rush-project-change-analyzer-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "rush-redis-cobuild-plugin-integration-test",
"projectFolder": "build-tests/rush-redis-cobuild-plugin-integration-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "set-webpack-public-path-plugin-test",
"projectFolder": "build-tests/set-webpack-public-path-plugin-test",
"reviewCategory": "tests",
"shouldPublish": false
},
{
"packageName": "ts-command-line-test",
"projectFolder": "build-tests/ts-command-line-test",
"reviewCategory": "tests",
"shouldPublish": false
},
// "heft-plugins" folder (alphabetical order)
{
"packageName": "@rushstack/heft-api-extractor-plugin",
"projectFolder": "heft-plugins/heft-api-extractor-plugin",
"reviewCategory": "libraries",
"shouldPublish": true,
"cyclicDependencyProjects": ["@rushstack/heft-node-rig"]
},
{
"packageName": "@rushstack/heft-dev-cert-plugin",
"projectFolder": "heft-plugins/heft-dev-cert-plugin",
"reviewCategory": "libraries",
"shouldPublish": true
},
{
"packageName": "@rushstack/heft-jest-plugin",
"projectFolder": "heft-plugins/heft-jest-plugin",
"reviewCategory": "libraries",
"shouldPublish": true,
"cyclicDependencyProjects": ["@rushstack/heft-node-rig"]
},
{
"packageName": "@rushstack/heft-lint-plugin",
"projectFolder": "heft-plugins/heft-lint-plugin",
"reviewCategory": "libraries",
"shouldPublish": true,
"cyclicDependencyProjects": ["@rushstack/heft-node-rig"]
},
{
"packageName": "@rushstack/heft-localization-typings-plugin",
"projectFolder": "heft-plugins/heft-localization-typings-plugin",
"reviewCategory": "libraries",
"shouldPublish": true
},
{
"packageName": "@rushstack/heft-sass-plugin",
"projectFolder": "heft-plugins/heft-sass-plugin",
"reviewCategory": "libraries",
"shouldPublish": true
},
{
"packageName": "@rushstack/heft-serverless-stack-plugin",
"projectFolder": "heft-plugins/heft-serverless-stack-plugin",
"reviewCategory": "libraries",
"shouldPublish": true
},
{
"packageName": "@rushstack/heft-storybook-plugin",
"projectFolder": "heft-plugins/heft-storybook-plugin",
"reviewCategory": "libraries",
"shouldPublish": true
},
{
"packageName": "@rushstack/heft-typescript-plugin",
"projectFolder": "heft-plugins/heft-typescript-plugin",
"reviewCategory": "libraries",
"shouldPublish": true,
"cyclicDependencyProjects": ["@rushstack/heft-node-rig"]
},
{
"packageName": "@rushstack/heft-webpack4-plugin",
"projectFolder": "heft-plugins/heft-webpack4-plugin",
"reviewCategory": "libraries",
"shouldPublish": true