dependency-cruiser 17.3.2 → 17.3.3-beta-2

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 (232) hide show
  1. package/bin/depcruise-baseline.mjs +43 -43
  2. package/bin/depcruise-fmt.mjs +89 -89
  3. package/bin/dependency-cruise.mjs +171 -171
  4. package/configs/plugins/3d-reporter-plugin.mjs +36 -36
  5. package/configs/plugins/stats-reporter-plugin.mjs +51 -51
  6. package/configs/recommended-strict.cjs +5 -5
  7. package/configs/recommended-warn-only.cjs +5 -5
  8. package/configs/recommended.cjs +22 -22
  9. package/configs/rules/no-circular.cjs +10 -10
  10. package/configs/rules/no-deprecated-core.cjs +10 -10
  11. package/configs/rules/no-duplicate-dependency-types.cjs +17 -17
  12. package/configs/rules/no-non-package-json.cjs +11 -11
  13. package/configs/rules/no-orphans.cjs +18 -18
  14. package/configs/rules/not-to-deprecated.cjs +10 -10
  15. package/configs/rules/not-to-unresolvable.cjs +10 -10
  16. package/package.json +170 -170
  17. package/src/cache/cache.mjs +139 -139
  18. package/src/cache/content-strategy.mjs +88 -88
  19. package/src/cache/find-content-changes.mjs +58 -58
  20. package/src/cache/helpers.mjs +52 -52
  21. package/src/cache/metadata-strategy.mjs +83 -83
  22. package/src/cache/options-compatible.mjs +56 -109
  23. package/src/cli/assert-node-environment-suitable.mjs +7 -7
  24. package/src/cli/defaults.mjs +5 -5
  25. package/src/cli/format-meta-info.mjs +22 -22
  26. package/src/cli/format.mjs +28 -28
  27. package/src/cli/index.mjs +145 -145
  28. package/src/cli/init-config/build-config.mjs +94 -94
  29. package/src/cli/init-config/environment-helpers.mjs +77 -77
  30. package/src/cli/init-config/find-extensions.mjs +27 -27
  31. package/src/cli/init-config/get-user-input.mjs +151 -151
  32. package/src/cli/init-config/index.mjs +88 -88
  33. package/src/cli/init-config/normalize-init-options.mjs +47 -47
  34. package/src/cli/init-config/utl.mjs +4 -4
  35. package/src/cli/init-config/validators.mjs +10 -10
  36. package/src/cli/init-config/write-config.mjs +21 -21
  37. package/src/cli/init-config/write-run-scripts-to-manifest.mjs +103 -107
  38. package/src/cli/listeners/cli-feedback.mjs +49 -49
  39. package/src/cli/listeners/ndjson.mjs +66 -66
  40. package/src/cli/listeners/performance-log/format-helpers.mjs +63 -63
  41. package/src/cli/listeners/performance-log/handlers.mjs +56 -56
  42. package/src/cli/listeners/performance-log/index.mjs +37 -37
  43. package/src/cli/normalize-cli-options.mjs +182 -182
  44. package/src/cli/tools/wrap-stream-in-html.mjs +37 -37
  45. package/src/cli/utl/assert-file-existence.mjs +7 -7
  46. package/src/cli/utl/io.mjs +28 -31
  47. package/src/config-utl/extract-babel-config.mjs +69 -69
  48. package/src/config-utl/extract-depcruise-config/index.mjs +54 -54
  49. package/src/config-utl/extract-depcruise-config/merge-configs.mjs +63 -63
  50. package/src/config-utl/extract-depcruise-config/read-config.mjs +9 -9
  51. package/src/config-utl/extract-depcruise-options.mjs +9 -9
  52. package/src/config-utl/extract-known-violations.mjs +49 -49
  53. package/src/config-utl/extract-ts-config.mjs +46 -48
  54. package/src/config-utl/extract-webpack-resolve-config.mjs +88 -88
  55. package/src/config-utl/make-absolute.mjs +5 -5
  56. package/src/enrich/add-validations.mjs +13 -13
  57. package/src/enrich/derive/circular.mjs +49 -49
  58. package/src/enrich/derive/dependents.mjs +27 -27
  59. package/src/enrich/derive/folders/aggregate-to-folders.mjs +104 -104
  60. package/src/enrich/derive/folders/index.mjs +19 -19
  61. package/src/enrich/derive/folders/utl.mjs +18 -18
  62. package/src/enrich/derive/metrics/get-module-metrics.mjs +27 -27
  63. package/src/enrich/derive/metrics/index.mjs +8 -8
  64. package/src/enrich/derive/module-utl.mjs +18 -18
  65. package/src/enrich/derive/orphan/index.mjs +18 -18
  66. package/src/enrich/derive/orphan/is-orphan.mjs +9 -9
  67. package/src/enrich/derive/reachable.mjs +165 -168
  68. package/src/enrich/enrich-modules.mjs +25 -25
  69. package/src/enrich/index.mjs +15 -15
  70. package/src/enrich/soften-known-violations.mjs +90 -90
  71. package/src/enrich/summarize/add-rule-set-used.mjs +13 -13
  72. package/src/enrich/summarize/get-stats.mjs +17 -17
  73. package/src/enrich/summarize/index.mjs +18 -18
  74. package/src/enrich/summarize/is-same-violation.mjs +30 -30
  75. package/src/enrich/summarize/summarize-folders.mjs +35 -35
  76. package/src/enrich/summarize/summarize-modules.mjs +97 -97
  77. package/src/enrich/summarize/summarize-options.mjs +71 -71
  78. package/src/extract/acorn/estree-helpers.mjs +66 -66
  79. package/src/extract/acorn/extract-amd-deps.mjs +63 -64
  80. package/src/extract/acorn/extract-cjs-deps.mjs +83 -83
  81. package/src/extract/acorn/extract-es6-deps.mjs +54 -54
  82. package/src/extract/acorn/extract-stats.mjs +4 -4
  83. package/src/extract/acorn/extract.mjs +28 -28
  84. package/src/extract/acorn/parse.mjs +37 -37
  85. package/src/extract/clear-caches.mjs +7 -7
  86. package/src/extract/extract-dependencies.mjs +109 -109
  87. package/src/extract/extract-stats.mjs +21 -21
  88. package/src/extract/gather-initial-sources.mjs +64 -64
  89. package/src/extract/helpers.mjs +73 -71
  90. package/src/extract/index.mjs +120 -120
  91. package/src/extract/resolve/determine-dependency-types.mjs +166 -169
  92. package/src/extract/resolve/external-module-helpers.mjs +76 -76
  93. package/src/extract/resolve/get-manifest.mjs +79 -79
  94. package/src/extract/resolve/index.mjs +175 -164
  95. package/src/extract/resolve/is-built-in.mjs +22 -24
  96. package/src/extract/resolve/merge-manifests.mjs +43 -43
  97. package/src/extract/resolve/module-classifiers.mjs +229 -229
  98. package/src/extract/resolve/resolve-amd.mjs +44 -44
  99. package/src/extract/resolve/resolve-cjs.mjs +40 -40
  100. package/src/extract/resolve/resolve-helpers.mjs +20 -20
  101. package/src/extract/resolve/resolve.mjs +26 -26
  102. package/src/extract/swc/dependency-visitor.mjs +211 -211
  103. package/src/extract/swc/extract-swc-deps.mjs +4 -4
  104. package/src/extract/swc/extract.mjs +7 -7
  105. package/src/extract/swc/parse.mjs +12 -12
  106. package/src/extract/transpile/babel-wrap.mjs +9 -9
  107. package/src/extract/transpile/coffeescript-wrap.mjs +21 -21
  108. package/src/extract/transpile/index.mjs +47 -47
  109. package/src/extract/transpile/javascript-wrap.mjs +6 -6
  110. package/src/extract/transpile/livescript-wrap.mjs +5 -5
  111. package/src/extract/transpile/meta.mjs +80 -80
  112. package/src/extract/transpile/svelte-preprocess.mjs +73 -73
  113. package/src/extract/transpile/svelte-wrap.mjs +19 -19
  114. package/src/extract/transpile/try-import-available.mjs +26 -27
  115. package/src/extract/transpile/typescript-wrap.mjs +39 -39
  116. package/src/extract/transpile/vue-template-wrap.cjs +43 -43
  117. package/src/extract/tsc/extract-stats.mjs +4 -4
  118. package/src/extract/tsc/extract-typescript-deps.mjs +429 -398
  119. package/src/extract/tsc/extract.mjs +22 -22
  120. package/src/extract/tsc/parse.mjs +21 -21
  121. package/src/graph-utl/add-focus.mjs +35 -35
  122. package/src/graph-utl/compare.mjs +24 -24
  123. package/src/graph-utl/consolidate-module-dependencies.mjs +35 -35
  124. package/src/graph-utl/consolidate-modules.mjs +33 -33
  125. package/src/graph-utl/consolidate-to-folder.mjs +13 -13
  126. package/src/graph-utl/consolidate-to-pattern.mjs +34 -34
  127. package/src/graph-utl/filter-bank.mjs +74 -69
  128. package/src/graph-utl/indexed-module-graph.mjs +227 -225
  129. package/src/graph-utl/match-facade.mjs +3 -3
  130. package/src/graph-utl/rule-set.mjs +20 -20
  131. package/src/graph-utl/strip-self-transitions.mjs +6 -6
  132. package/src/main/cruise.mjs +81 -81
  133. package/src/main/files-and-dirs/normalize.mjs +7 -7
  134. package/src/main/format.mjs +11 -14
  135. package/src/main/helpers.mjs +25 -25
  136. package/src/main/index.mjs +8 -8
  137. package/src/main/options/assert-validity.mjs +100 -100
  138. package/src/main/options/defaults.mjs +11 -11
  139. package/src/main/options/normalize.mjs +158 -160
  140. package/src/main/report-wrap.mjs +37 -37
  141. package/src/main/resolve-options/normalize.mjs +127 -128
  142. package/src/main/rule-set/assert-validity.mjs +67 -73
  143. package/src/main/rule-set/normalize.mjs +81 -79
  144. package/src/meta.cjs +15 -16
  145. package/src/report/anon/anonymize-path-element.mjs +20 -34
  146. package/src/report/anon/anonymize-path.mjs +11 -11
  147. package/src/report/anon/index.mjs +119 -119
  148. package/src/report/anon/random-string.mjs +23 -23
  149. package/src/report/azure-devops.mjs +75 -99
  150. package/src/report/baseline.mjs +9 -9
  151. package/src/report/csv.mjs +13 -13
  152. package/src/report/d2.mjs +105 -105
  153. package/src/report/dot/default-theme.mjs +152 -152
  154. package/src/report/dot/index.mjs +146 -146
  155. package/src/report/dot/module-utl.mjs +72 -72
  156. package/src/report/dot/prepare-custom-level.mjs +20 -20
  157. package/src/report/dot/prepare-flat-level.mjs +11 -11
  158. package/src/report/dot/prepare-folder-level.mjs +12 -13
  159. package/src/report/dot/theming.mjs +73 -73
  160. package/src/report/dot-webpage/dot-module.mjs +36 -36
  161. package/src/report/dot-webpage/svg-in-html-snippets/script.cjs +208 -210
  162. package/src/report/dot-webpage/svg-in-html-snippets/style.css +51 -51
  163. package/src/report/dot-webpage/wrap-in-html.mjs +7 -7
  164. package/src/report/error-html/index.mjs +49 -49
  165. package/src/report/error-html/utl.mjs +99 -99
  166. package/src/report/error-long.mjs +1 -1
  167. package/src/report/error.mjs +93 -93
  168. package/src/report/html/index.mjs +48 -48
  169. package/src/report/identity.mjs +4 -4
  170. package/src/report/index.mjs +33 -33
  171. package/src/report/json.mjs +4 -4
  172. package/src/report/markdown.mjs +120 -120
  173. package/src/report/mermaid.mjs +111 -111
  174. package/src/report/metrics.mjs +185 -185
  175. package/src/report/null.mjs +4 -4
  176. package/src/report/plugins.mjs +41 -41
  177. package/src/report/teamcity.mjs +150 -150
  178. package/src/report/text.mjs +42 -42
  179. package/src/report/utl/dependency-to-incidence-transformer.mjs +32 -32
  180. package/src/report/utl/index.mjs +53 -53
  181. package/src/schema/configuration.validate.mjs +1 -0
  182. package/src/schema/cruise-result.validate.mjs +1 -0
  183. package/src/schema/utl.mjs +6 -0
  184. package/src/utl/array-util.mjs +25 -25
  185. package/src/utl/bus.mjs +12 -12
  186. package/src/utl/extract-root-module-name.cjs +8 -8
  187. package/src/utl/find-all-files.mjs +54 -54
  188. package/src/utl/get-extension.mjs +2 -2
  189. package/src/utl/object-util.mjs +21 -22
  190. package/src/utl/path-to-posix.mjs +5 -5
  191. package/src/utl/regex-util.mjs +20 -20
  192. package/src/utl/try-import.mjs +42 -41
  193. package/src/utl/try-require.cjs +23 -23
  194. package/src/utl/wrap-and-indent.mjs +33 -33
  195. package/src/validate/index.mjs +65 -65
  196. package/src/validate/match-dependency-rule.mjs +47 -47
  197. package/src/validate/match-folder-dependency-rule.mjs +27 -27
  198. package/src/validate/match-module-rule-helpers.mjs +76 -76
  199. package/src/validate/match-module-rule.mjs +12 -12
  200. package/src/validate/matchers.mjs +162 -162
  201. package/src/validate/rule-classifiers.mjs +9 -9
  202. package/src/validate/violates-required-rule.mjs +23 -23
  203. package/types/cache-options.d.mts +27 -27
  204. package/types/config-utl/extract-babel-config.d.mts +1 -1
  205. package/types/config-utl/extract-depcruise-config.d.mts +3 -3
  206. package/types/config-utl/extract-depcruise-options.d.mts +1 -1
  207. package/types/config-utl/extract-ts-config.d.mts +1 -1
  208. package/types/config-utl/extract-webpack-resolve-config.d.mts +3 -3
  209. package/types/configuration.d.mts +10 -10
  210. package/types/cruise-result.d.mts +414 -414
  211. package/types/dependency-cruiser.d.mts +52 -52
  212. package/types/filter-types.d.mts +45 -45
  213. package/types/options.d.mts +430 -430
  214. package/types/plugins/3d-reporter-plugin.d.mts +9 -9
  215. package/types/plugins/mermaid-reporter-plugin.d.mts +10 -10
  216. package/types/plugins/stats-reporter-plugin.d.mts +9 -9
  217. package/types/reporter-options.d.mts +196 -196
  218. package/types/resolve-options.d.mts +23 -23
  219. package/types/restrictions.d.mts +174 -174
  220. package/types/rule-set.d.mts +132 -132
  221. package/types/rule-summary.d.mts +14 -14
  222. package/types/shared-types.d.mts +89 -89
  223. package/types/strict-filter-types.d.mts +52 -52
  224. package/types/strict-options.d.mts +34 -34
  225. package/types/strict-restrictions.d.mts +25 -25
  226. package/types/strict-rule-set.d.mts +36 -36
  227. package/types/violations.d.mts +40 -40
  228. package/src/schema/README.md +0 -5
  229. package/src/schema/baseline-violations.schema.mjs +0 -1
  230. package/src/schema/configuration.schema.mjs +0 -1
  231. package/src/schema/cruise-result.schema.mjs +0 -1
  232. package/types/README.md +0 -1
@@ -6,8 +6,8 @@ import cli from "#cli/index.mjs";
6
6
  import meta from "#meta.cjs";
7
7
 
8
8
  function showHelp() {
9
- process.stdout
10
- .write(`Usage: depcruise-baseline [options] <files-or-directories...>
9
+ process.stdout
10
+ .write(`Usage: depcruise-baseline [options] <files-or-directories...>
11
11
 
12
12
  Writes all known violations of rules in a .dependency-cruiser.js to a file.
13
13
  Alias for depcruise -c -T baseline -f .dependency-cruiser-known-violations.json [files-or-directories]
@@ -22,48 +22,48 @@ Options:
22
22
  }
23
23
 
24
24
  try {
25
- assertNodeEnvironmentSuitable();
25
+ assertNodeEnvironmentSuitable();
26
26
 
27
- const { values: options, positionals } = parseArgs({
28
- options: {
29
- config: {
30
- type: "string",
31
- short: "c",
32
- default: "",
33
- },
34
- "output-to": {
35
- type: "string",
36
- short: "f",
37
- default: ".dependency-cruiser-known-violations.json",
38
- },
39
- version: {
40
- type: "boolean",
41
- short: "V",
42
- },
43
- help: {
44
- type: "boolean",
45
- short: "h",
46
- },
47
- },
48
- allowPositionals: true,
49
- });
27
+ const { values: options, positionals } = parseArgs({
28
+ options: {
29
+ config: {
30
+ type: "string",
31
+ short: "c",
32
+ default: "",
33
+ },
34
+ "output-to": {
35
+ type: "string",
36
+ short: "f",
37
+ default: ".dependency-cruiser-known-violations.json",
38
+ },
39
+ version: {
40
+ type: "boolean",
41
+ short: "V",
42
+ },
43
+ help: {
44
+ type: "boolean",
45
+ short: "h",
46
+ },
47
+ },
48
+ allowPositionals: true,
49
+ });
50
50
 
51
- if (options.version) {
52
- process.stdout.write(`${meta.version}\n`);
53
- } else if (options.help || positionals.length === 0) {
54
- showHelp();
55
- } else {
56
- if (options.config === "") {
57
- options.config = true;
58
- }
59
- process.exitCode = await cli(positionals, {
60
- config: options.config,
61
- outputTo: options["output-to"],
62
- cache: false,
63
- outputType: "baseline",
64
- });
65
- }
51
+ if (options.version) {
52
+ process.stdout.write(`${meta.version}\n`);
53
+ } else if (options.help || positionals.length === 0) {
54
+ showHelp();
55
+ } else {
56
+ if (options.config === "") {
57
+ options.config = true;
58
+ }
59
+ process.exitCode = await cli(positionals, {
60
+ config: options.config,
61
+ outputTo: options["output-to"],
62
+ cache: false,
63
+ outputType: "baseline",
64
+ });
65
+ }
66
66
  } catch (pError) {
67
- process.stderr.write(pError.message);
68
- process.exitCode = 1;
67
+ process.stderr.write(pError.message);
68
+ process.exitCode = 1;
69
69
  }
@@ -6,7 +6,7 @@ import format from "#cli/format.mjs";
6
6
  import meta from "#meta.cjs";
7
7
 
8
8
  function showHelp() {
9
- process.stdout.write(`Usage: depcruise-fmt [options] <dependency-cruiser-json>
9
+ process.stdout.write(`Usage: depcruise-fmt [options] <dependency-cruiser-json>
10
10
 
11
11
  Format dependency-cruiser output json.
12
12
  Details: https://github.com/sverweij/dependency-cruiser
@@ -36,95 +36,95 @@ Options:
36
36
  }
37
37
 
38
38
  try {
39
- assertNodeEnvironmentSuitable();
39
+ assertNodeEnvironmentSuitable();
40
40
 
41
- const { values: options, positionals } = parseArgs({
42
- options: {
43
- "output-to": {
44
- type: "string",
45
- short: "f",
46
- default: "-",
47
- },
48
- "output-type": {
49
- type: "string",
50
- short: "T",
51
- default: "err",
52
- },
53
- "include-only": {
54
- type: "string",
55
- short: "I",
56
- },
57
- focus: {
58
- type: "string",
59
- short: "F",
60
- },
61
- "focus-depth": {
62
- type: "string",
63
- default: "1",
64
- },
65
- reaches: {
66
- type: "string",
67
- short: "R",
68
- },
69
- highlight: {
70
- type: "string",
71
- short: "H",
72
- },
73
- exclude: {
74
- type: "string",
75
- short: "x",
76
- },
77
- collapse: {
78
- type: "string",
79
- short: "S",
80
- },
81
- prefix: {
82
- type: "string",
83
- short: "P",
84
- },
85
- suffix: {
86
- type: "string",
87
- },
88
- "exit-code": {
89
- type: "boolean",
90
- short: "e",
91
- },
92
- version: {
93
- type: "boolean",
94
- short: "V",
95
- },
96
- help: {
97
- type: "boolean",
98
- short: "h",
99
- },
100
- },
101
- allowPositionals: true,
102
- });
41
+ const { values: options, positionals } = parseArgs({
42
+ options: {
43
+ "output-to": {
44
+ type: "string",
45
+ short: "f",
46
+ default: "-",
47
+ },
48
+ "output-type": {
49
+ type: "string",
50
+ short: "T",
51
+ default: "err",
52
+ },
53
+ "include-only": {
54
+ type: "string",
55
+ short: "I",
56
+ },
57
+ focus: {
58
+ type: "string",
59
+ short: "F",
60
+ },
61
+ "focus-depth": {
62
+ type: "string",
63
+ default: "1",
64
+ },
65
+ reaches: {
66
+ type: "string",
67
+ short: "R",
68
+ },
69
+ highlight: {
70
+ type: "string",
71
+ short: "H",
72
+ },
73
+ exclude: {
74
+ type: "string",
75
+ short: "x",
76
+ },
77
+ collapse: {
78
+ type: "string",
79
+ short: "S",
80
+ },
81
+ prefix: {
82
+ type: "string",
83
+ short: "P",
84
+ },
85
+ suffix: {
86
+ type: "string",
87
+ },
88
+ "exit-code": {
89
+ type: "boolean",
90
+ short: "e",
91
+ },
92
+ version: {
93
+ type: "boolean",
94
+ short: "V",
95
+ },
96
+ help: {
97
+ type: "boolean",
98
+ short: "h",
99
+ },
100
+ },
101
+ allowPositionals: true,
102
+ });
103
103
 
104
- if (options.version) {
105
- process.stdout.write(`${meta.version}\n`);
106
- } else if (options.help || positionals.length === 0) {
107
- showHelp();
108
- } else {
109
- const lFormatOptions = {
110
- ...options,
111
- outputTo: options["output-to"],
112
- outputType: options["output-type"],
113
- includeOnly: options["include-only"],
114
- focusDepth: options["focus-depth"],
115
- exitCode: options["exit-code"],
116
- };
117
- delete lFormatOptions["output-to"];
118
- delete lFormatOptions["output-type"];
119
- delete lFormatOptions["include-only"];
120
- delete lFormatOptions["focus-depth"];
121
- delete lFormatOptions["exit-code"];
122
- const lExitCode = await format(positionals[0], lFormatOptions);
123
- if (lFormatOptions.exitCode) {
124
- process.exitCode = lExitCode;
125
- }
126
- }
104
+ if (options.version) {
105
+ process.stdout.write(`${meta.version}\n`);
106
+ } else if (options.help || positionals.length === 0) {
107
+ showHelp();
108
+ } else {
109
+ const lFormatOptions = {
110
+ ...options,
111
+ outputTo: options["output-to"],
112
+ outputType: options["output-type"],
113
+ includeOnly: options["include-only"],
114
+ focusDepth: options["focus-depth"],
115
+ exitCode: options["exit-code"],
116
+ };
117
+ delete lFormatOptions["output-to"];
118
+ delete lFormatOptions["output-type"];
119
+ delete lFormatOptions["include-only"];
120
+ delete lFormatOptions["focus-depth"];
121
+ delete lFormatOptions["exit-code"];
122
+ const lExitCode = await format(positionals[0], lFormatOptions);
123
+ if (lFormatOptions.exitCode) {
124
+ process.exitCode = lExitCode;
125
+ }
126
+ }
127
127
  } catch (pError) {
128
- process.stderr.write(pError.message);
129
- process.exitCode = 1;
128
+ process.stderr.write(pError.message);
129
+ process.exitCode = 1;
130
130
  }
@@ -6,178 +6,178 @@ import cli from "#cli/index.mjs";
6
6
  import meta from "#meta.cjs";
7
7
 
8
8
  try {
9
- assertNodeEnvironmentSuitable();
9
+ assertNodeEnvironmentSuitable();
10
10
 
11
- program
12
- .description(
13
- `Validate and visualize dependencies.${EOL}Details: https://github.com/sverweij/dependency-cruiser`,
14
- )
15
- .option(
16
- "--init [oneshot]",
17
- `set up dependency-cruiser for use in your environment (<<< recommended!)${EOL}${EOL}`,
18
- )
19
- .option(
20
- "-c, --config [file]",
21
- "read rules and options from [file] (e.g. .dependency-cruiser.js)",
22
- true,
23
- )
24
- .addOption(
25
- new Option(
26
- "--no-config",
27
- "do not use a configuration file. " +
28
- "Overrides any --config option set earlier",
29
- ).hideHelp(true),
30
- )
31
- .option(
32
- "-T, --output-type <type>",
33
- "output type; e.g. err, err-html, dot, ddot, archi, flat, d2, mermaid, text or json",
34
- "err",
35
- )
36
- .option("-m, --metrics", "calculate stability metrics", false)
37
- .addOption(new Option("--no-metrics").hideHelp(true))
38
- .option(
39
- "-f, --output-to <file>",
40
- "file to write output to; - for stdout",
41
- "-",
42
- )
43
- .option(
44
- "-I, --include-only <regex>",
45
- "only include modules matching the regex",
46
- )
47
- .option(
48
- "-F, --focus <regex>",
49
- "only include modules matching the regex + their direct neighbours",
50
- )
51
- .option(
52
- "--focus-depth <number>",
53
- "the depth to focus on - only applied when --focus is passed too. " +
54
- "1= direct neighbors, 2=neighbours of neighbours etc.",
55
- 1,
56
- )
57
- .option(
58
- "-R, --reaches <regex>",
59
- "only include modules matching the regex + all modules that can reach them",
60
- )
61
- .option(
62
- "-A, --affected [revision]",
63
- "only include modules changed since the revision + all modules that can reach them (when not specified revision defaults to 'main')",
64
- )
65
- .option(
66
- "-H, --highlight <regex>",
67
- "mark modules matching the regex as 'highlighted'",
68
- )
69
- .option("-x, --exclude <regex>", "exclude all modules matching the regex")
70
- .option(
71
- "-X, --do-not-follow <regex>",
72
- "include modules matching the regex, but don't follow their dependencies",
73
- )
74
- .option(
75
- "--ignore-known [file]",
76
- "ignore known violations as saved in [file] (default: .dependency-cruiser-known-violations.json)",
77
- )
78
- .addOption(new Option("--no-ignore-known").hideHelp(true))
79
- .addOption(
80
- new Option(
81
- "--ts-config [file]",
82
- "use a TypeScript configuration (e.g. tsconfig.json) or it's JavaScript counterpart (e.g. jsconfig.json)",
83
- ).hideHelp(true),
84
- )
85
- .addOption(
86
- new Option(
87
- "--webpack-config [file]",
88
- "use a webpack configuration (e.g. webpack.config.js)",
89
- ).hideHelp(true),
90
- )
91
- .addOption(
92
- new Option(
93
- "--ts-pre-compilation-deps",
94
- "detect dependencies that only exist before typescript-to-javascript " +
95
- "compilation (off by default)",
96
- ).hideHelp(true),
97
- )
98
- .option(
99
- "-S, --collapse <regex>",
100
- "collapse a to a folder depth by passing a single digit (e.g. 2). When passed a " +
101
- 'regex collapses to that pattern. E.g. "^packages/[^/]+/" would collapse to ' +
102
- "modules/ folders directly under your packages folder. ",
103
- )
104
- .addOption(
105
- new Option(
106
- "-p, --progress [type]",
107
- "show progress while dependency-cruiser is busy",
108
- ).choices(["cli-feedback", "performance-log", "ndjson", "none"]),
109
- )
110
- .addOption(
111
- new Option("--no-progress", "Alias of --progress none").hideHelp(true),
112
- )
113
- .addOption(
114
- new Option(
115
- "-d, --max-depth <n>",
116
- "you probably want to use --collapse instead of --max-depth. " +
117
- "(max-depth would limit the cruise depth; 0 <= n <= 99 (default: 0 - no limit)).",
118
- ).hideHelp(true),
119
- )
120
- .addOption(
121
- new Option(
122
- "-M, --module-systems <items>",
123
- "list of module systems (default: amd, cjs, es6, tsd)",
124
- ).hideHelp(true),
125
- )
126
- .option(
127
- "-P, --prefix <prefix>",
128
- `prefix to use for links in the dot and err-html reporters${EOL}${EOL}`,
129
- )
130
- .option(
131
- "--suffix <suffix>",
132
- `suffix to use for links in the dot and err-html reporters${EOL}${EOL}`,
133
- )
134
- .option(
135
- "-C, --cache [cache-directory]",
136
- "use a cache to speed up execution. " +
137
- "The directory defaults to node_modules/.cache/dependency-cruiser",
138
- )
139
- .addOption(
140
- new Option(
141
- "--cache-strategy <strategy>",
142
- "strategy to use for detecting changed files in the cache.",
143
- ).choices(["metadata", "content"]),
144
- )
145
- .addOption(
146
- new Option(
147
- "--no-cache",
148
- "switch off caching. Overrides the 'cache' key in .dependency-cruiser.js " +
149
- "and --cache options set earlier on the command line",
150
- ).hideHelp(true),
151
- )
152
- .addOption(
153
- new Option(
154
- "--preserve-symlinks",
155
- "leave symlinks unchanged (off by default)",
156
- ).hideHelp(true),
157
- )
158
- .addOption(
159
- new Option("-v, --validate [file]", `alias for --config`).hideHelp(true),
160
- )
161
- .option(
162
- "-i, --info",
163
- "shows what languages and extensions dependency-cruiser supports",
164
- )
165
- .addHelpText(
166
- "after",
167
- `${EOL}Other options:` +
168
- `${EOL} see https://github.com/sverweij/dependency-cruiser/blob/main/doc/cli.md${EOL}`,
169
- )
170
- .version(meta.version)
171
- .argument("[files-or-directories...]")
172
- .allowExcessArguments()
173
- .parse(process.argv);
11
+ program
12
+ .description(
13
+ `Validate and visualize dependencies.${EOL}Details: https://github.com/sverweij/dependency-cruiser`,
14
+ )
15
+ .option(
16
+ "--init [oneshot]",
17
+ `set up dependency-cruiser for use in your environment (<<< recommended!)${EOL}${EOL}`,
18
+ )
19
+ .option(
20
+ "-c, --config [file]",
21
+ "read rules and options from [file] (e.g. .dependency-cruiser.js)",
22
+ true,
23
+ )
24
+ .addOption(
25
+ new Option(
26
+ "--no-config",
27
+ "do not use a configuration file. " +
28
+ "Overrides any --config option set earlier",
29
+ ).hideHelp(true),
30
+ )
31
+ .option(
32
+ "-T, --output-type <type>",
33
+ "output type; e.g. err, err-html, dot, ddot, archi, flat, d2, mermaid, text or json",
34
+ "err",
35
+ )
36
+ .option("-m, --metrics", "calculate stability metrics", false)
37
+ .addOption(new Option("--no-metrics").hideHelp(true))
38
+ .option(
39
+ "-f, --output-to <file>",
40
+ "file to write output to; - for stdout",
41
+ "-",
42
+ )
43
+ .option(
44
+ "-I, --include-only <regex>",
45
+ "only include modules matching the regex",
46
+ )
47
+ .option(
48
+ "-F, --focus <regex>",
49
+ "only include modules matching the regex + their direct neighbours",
50
+ )
51
+ .option(
52
+ "--focus-depth <number>",
53
+ "the depth to focus on - only applied when --focus is passed too. " +
54
+ "1= direct neighbors, 2=neighbours of neighbours etc.",
55
+ 1,
56
+ )
57
+ .option(
58
+ "-R, --reaches <regex>",
59
+ "only include modules matching the regex + all modules that can reach them",
60
+ )
61
+ .option(
62
+ "-A, --affected [revision]",
63
+ "only include modules changed since the revision + all modules that can reach them (when not specified revision defaults to 'main')",
64
+ )
65
+ .option(
66
+ "-H, --highlight <regex>",
67
+ "mark modules matching the regex as 'highlighted'",
68
+ )
69
+ .option("-x, --exclude <regex>", "exclude all modules matching the regex")
70
+ .option(
71
+ "-X, --do-not-follow <regex>",
72
+ "include modules matching the regex, but don't follow their dependencies",
73
+ )
74
+ .option(
75
+ "--ignore-known [file]",
76
+ "ignore known violations as saved in [file] (default: .dependency-cruiser-known-violations.json)",
77
+ )
78
+ .addOption(new Option("--no-ignore-known").hideHelp(true))
79
+ .addOption(
80
+ new Option(
81
+ "--ts-config [file]",
82
+ "use a TypeScript configuration (e.g. tsconfig.json) or it's JavaScript counterpart (e.g. jsconfig.json)",
83
+ ).hideHelp(true),
84
+ )
85
+ .addOption(
86
+ new Option(
87
+ "--webpack-config [file]",
88
+ "use a webpack configuration (e.g. webpack.config.js)",
89
+ ).hideHelp(true),
90
+ )
91
+ .addOption(
92
+ new Option(
93
+ "--ts-pre-compilation-deps",
94
+ "detect dependencies that only exist before typescript-to-javascript " +
95
+ "compilation (off by default)",
96
+ ).hideHelp(true),
97
+ )
98
+ .option(
99
+ "-S, --collapse <regex>",
100
+ "collapse a to a folder depth by passing a single digit (e.g. 2). When passed a " +
101
+ 'regex collapses to that pattern. E.g. "^packages/[^/]+/" would collapse to ' +
102
+ "modules/ folders directly under your packages folder. ",
103
+ )
104
+ .addOption(
105
+ new Option(
106
+ "-p, --progress [type]",
107
+ "show progress while dependency-cruiser is busy",
108
+ ).choices(["cli-feedback", "performance-log", "ndjson", "none"]),
109
+ )
110
+ .addOption(
111
+ new Option("--no-progress", "Alias of --progress none").hideHelp(true),
112
+ )
113
+ .addOption(
114
+ new Option(
115
+ "-d, --max-depth <n>",
116
+ "you probably want to use --collapse instead of --max-depth. " +
117
+ "(max-depth would limit the cruise depth; 0 <= n <= 99 (default: 0 - no limit)).",
118
+ ).hideHelp(true),
119
+ )
120
+ .addOption(
121
+ new Option(
122
+ "-M, --module-systems <items>",
123
+ "list of module systems (default: amd, cjs, es6, tsd)",
124
+ ).hideHelp(true),
125
+ )
126
+ .option(
127
+ "-P, --prefix <prefix>",
128
+ `prefix to use for links in the dot and err-html reporters${EOL}${EOL}`,
129
+ )
130
+ .option(
131
+ "--suffix <suffix>",
132
+ `suffix to use for links in the dot and err-html reporters${EOL}${EOL}`,
133
+ )
134
+ .option(
135
+ "-C, --cache [cache-directory]",
136
+ "use a cache to speed up execution. " +
137
+ "The directory defaults to node_modules/.cache/dependency-cruiser",
138
+ )
139
+ .addOption(
140
+ new Option(
141
+ "--cache-strategy <strategy>",
142
+ "strategy to use for detecting changed files in the cache.",
143
+ ).choices(["metadata", "content"]),
144
+ )
145
+ .addOption(
146
+ new Option(
147
+ "--no-cache",
148
+ "switch off caching. Overrides the 'cache' key in .dependency-cruiser.js " +
149
+ "and --cache options set earlier on the command line",
150
+ ).hideHelp(true),
151
+ )
152
+ .addOption(
153
+ new Option(
154
+ "--preserve-symlinks",
155
+ "leave symlinks unchanged (off by default)",
156
+ ).hideHelp(true),
157
+ )
158
+ .addOption(
159
+ new Option("-v, --validate [file]", `alias for --config`).hideHelp(true),
160
+ )
161
+ .option(
162
+ "-i, --info",
163
+ "shows what languages and extensions dependency-cruiser supports",
164
+ )
165
+ .addHelpText(
166
+ "after",
167
+ `${EOL}Other options:` +
168
+ `${EOL} see https://github.com/sverweij/dependency-cruiser/blob/main/doc/cli.md${EOL}`,
169
+ )
170
+ .version(meta.version)
171
+ .argument("[files-or-directories...]")
172
+ .allowExcessArguments()
173
+ .parse(process.argv);
174
174
 
175
- if (Boolean(program.args[0]) || program.opts().info || program.opts().init) {
176
- process.exitCode = await cli(program.args, program.opts());
177
- } else {
178
- program.help();
179
- }
175
+ if (Boolean(program.args[0]) || program.opts().info || program.opts().init) {
176
+ process.exitCode = await cli(program.args, program.opts());
177
+ } else {
178
+ program.help();
179
+ }
180
180
  } catch (pError) {
181
- process.stderr.write(pError.message);
182
- process.exitCode = 1;
181
+ process.stderr.write(pError.message);
182
+ process.exitCode = 1;
183
183
  }