@nx/dotnet 0.0.1 → 22.0.0-beta.9

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 (78) hide show
  1. package/README.md +117 -4
  2. package/README.md__tmpl__ +70 -0
  3. package/dist/analyzer/analyzer-client.d.ts +39 -0
  4. package/dist/analyzer/analyzer-client.d.ts.map +1 -0
  5. package/dist/analyzer/analyzer-client.js +227 -0
  6. package/dist/generators/init/init.d.ts +7 -0
  7. package/dist/generators/init/init.d.ts.map +1 -0
  8. package/dist/generators/init/init.js +107 -0
  9. package/dist/generators/init/schema.d.ts +6 -0
  10. package/dist/generators/init/schema.json +34 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +4 -0
  14. package/dist/lib/Microsoft.Build.Locator.dll +0 -0
  15. package/dist/lib/MsbuildAnalyzer +0 -0
  16. package/dist/lib/MsbuildAnalyzer.deps.json +476 -0
  17. package/dist/lib/MsbuildAnalyzer.dll +0 -0
  18. package/dist/lib/MsbuildAnalyzer.dll.config +629 -0
  19. package/dist/lib/MsbuildAnalyzer.pdb +0 -0
  20. package/dist/lib/MsbuildAnalyzer.runtimeconfig.json +14 -0
  21. package/dist/plugin.d.ts +1 -1
  22. package/dist/plugin.d.ts.map +1 -1
  23. package/dist/plugin.js +3 -2
  24. package/dist/plugins/create-dependencies.d.ts +4 -0
  25. package/dist/plugins/create-dependencies.d.ts.map +1 -0
  26. package/dist/plugins/create-dependencies.js +47 -0
  27. package/dist/{src/plugins/plugin.d.ts → plugins/create-nodes.d.ts} +2 -3
  28. package/dist/plugins/create-nodes.d.ts.map +1 -0
  29. package/dist/plugins/create-nodes.js +48 -0
  30. package/dist/plugins/plugin.d.ts +5 -0
  31. package/dist/plugins/plugin.d.ts.map +1 -0
  32. package/dist/plugins/plugin.js +14 -0
  33. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  34. package/dist/utils/cache.d.ts.map +1 -0
  35. package/dist/utils/has-dotnet-plugin.d.ts +3 -0
  36. package/dist/utils/has-dotnet-plugin.d.ts.map +1 -0
  37. package/dist/utils/has-dotnet-plugin.js +8 -0
  38. package/dist/utils/versions.d.ts +2 -0
  39. package/dist/utils/versions.d.ts.map +1 -0
  40. package/dist/utils/versions.js +5 -0
  41. package/generators.json +10 -0
  42. package/migrations.json +4 -0
  43. package/package.json +48 -59
  44. package/dist/package.json +0 -84
  45. package/dist/src/index.d.ts +0 -2
  46. package/dist/src/index.d.ts.map +0 -1
  47. package/dist/src/index.js +0 -7
  48. package/dist/src/plugins/plugin.d.ts.map +0 -1
  49. package/dist/src/plugins/plugin.js +0 -130
  50. package/dist/src/utils/cache.d.ts.map +0 -1
  51. package/dist/src/utils/dependency-detection.d.ts +0 -5
  52. package/dist/src/utils/dependency-detection.d.ts.map +0 -1
  53. package/dist/src/utils/dependency-detection.js +0 -58
  54. package/dist/src/utils/dotnet-cli.d.ts +0 -9
  55. package/dist/src/utils/dotnet-cli.d.ts.map +0 -1
  56. package/dist/src/utils/dotnet-cli.js +0 -39
  57. package/dist/src/utils/dotnet-project-parser.d.ts +0 -13
  58. package/dist/src/utils/dotnet-project-parser.d.ts.map +0 -1
  59. package/dist/src/utils/dotnet-project-parser.js +0 -83
  60. package/dist/src/utils/logger.d.ts +0 -3
  61. package/dist/src/utils/logger.d.ts.map +0 -1
  62. package/dist/src/utils/logger.js +0 -24
  63. package/dist/src/utils/target-builder.d.ts +0 -12
  64. package/dist/src/utils/target-builder.d.ts.map +0 -1
  65. package/dist/src/utils/target-builder.js +0 -525
  66. package/plugin.ts +0 -5
  67. package/src/index.ts +0 -6
  68. package/src/plugins/plugin.ts +0 -230
  69. package/src/utils/cache.ts +0 -19
  70. package/src/utils/dependency-detection.ts +0 -84
  71. package/src/utils/dotnet-cli.ts +0 -52
  72. package/src/utils/dotnet-project-parser.ts +0 -105
  73. package/src/utils/logger.ts +0 -24
  74. package/src/utils/target-builder.ts +0 -657
  75. package/tsconfig.json +0 -16
  76. package/tsconfig.lib.json +0 -21
  77. /package/dist/{src/utils → utils}/cache.d.ts +0 -0
  78. /package/dist/{src/utils → utils}/cache.js +0 -0
@@ -1,525 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildDotNetTargets = buildDotNetTargets;
4
- const node_path_1 = require("node:path");
5
- const get_named_inputs_1 = require("@nx/devkit/src/utils/get-named-inputs");
6
- const dotnet_project_parser_1 = require("./dotnet-project-parser");
7
- async function buildDotNetTargets(projectRoot, projectFiles, options, context) {
8
- const namedInputs = (0, get_named_inputs_1.getNamedInputs)(projectRoot, context);
9
- const targets = {};
10
- let metadata;
11
- const hasMultipleProjects = projectFiles.length > 1;
12
- // Collect information about all projects in this directory
13
- const projectInfos = projectFiles.map((projectFile) => ({
14
- file: projectFile,
15
- fileName: (0, node_path_1.basename)(projectFile),
16
- projectName: (0, dotnet_project_parser_1.extractProjectNameFromFile)((0, node_path_1.basename)(projectFile)),
17
- info: (0, dotnet_project_parser_1.parseProjectFile)((0, node_path_1.join)(context.workspaceRoot, projectFile)),
18
- }));
19
- // Aggregate technology detection from all projects
20
- const technologies = new Set(['dotnet']);
21
- let hasTestProjects = false;
22
- let hasExecutableProjects = false;
23
- let hasLibraryProjects = false;
24
- for (const { info } of projectInfos) {
25
- switch (info.projectType) {
26
- case 'csharp':
27
- technologies.add('csharp');
28
- break;
29
- case 'fsharp':
30
- technologies.add('fsharp');
31
- break;
32
- case 'vb':
33
- technologies.add('vb');
34
- break;
35
- }
36
- if (info.isTestProject) {
37
- technologies.add('test');
38
- hasTestProjects = true;
39
- }
40
- if (info.isExecutable) {
41
- hasExecutableProjects = true;
42
- }
43
- if (!info.isExecutable && !info.isTestProject) {
44
- hasLibraryProjects = true;
45
- }
46
- }
47
- const technologiesArray = Array.from(technologies);
48
- metadata = { technologies: technologiesArray };
49
- const baseInputs = 'production' in namedInputs
50
- ? ['default', '^production']
51
- : ['default', '^default'];
52
- // Build restore targets
53
- addRestoreTargets(targets, projectInfos, options, hasMultipleProjects, technologiesArray);
54
- // Build targets
55
- addBuildTargets(targets, projectInfos, options, hasMultipleProjects, baseInputs, technologiesArray);
56
- // Test targets
57
- if (hasTestProjects) {
58
- addTestTargets(targets, projectInfos, options, hasMultipleProjects, baseInputs, technologiesArray);
59
- }
60
- // Clean targets
61
- addCleanTargets(targets, projectInfos, options, hasMultipleProjects, technologiesArray);
62
- // Publish targets
63
- if (hasExecutableProjects) {
64
- addPublishTargets(targets, projectInfos, options, hasMultipleProjects, baseInputs, technologiesArray);
65
- }
66
- // Pack targets
67
- if (hasLibraryProjects) {
68
- addPackTargets(targets, projectInfos, options, hasMultipleProjects, baseInputs, technologiesArray);
69
- }
70
- return { targets, metadata };
71
- }
72
- function addRestoreTargets(targets, projectInfos, options, hasMultipleProjects, technologies) {
73
- if (hasMultipleProjects) {
74
- // Create project-specific restore targets
75
- for (const { fileName, projectName, info } of projectInfos) {
76
- const projectSpecificRestoreTarget = `${options.restoreTargetName}:${projectName}`;
77
- targets[projectSpecificRestoreTarget] = {
78
- command: 'dotnet restore',
79
- options: {
80
- cwd: '{projectRoot}',
81
- args: [fileName],
82
- },
83
- cache: true,
84
- inputs: [
85
- '{projectRoot}/**/*.{cs,csproj,fs,fsproj,vb,vbproj}',
86
- // @todo(@AgentEnder): we should include these, but right now we aren't adding them to graph.
87
- // { externalDependencies: info.packageReferences },
88
- ],
89
- outputs: ['{projectRoot}/obj'],
90
- metadata: {
91
- technologies,
92
- description: `Restore dependencies for ${fileName}`,
93
- help: {
94
- command: 'dotnet restore --help',
95
- example: {},
96
- },
97
- },
98
- };
99
- }
100
- // Create umbrella restore target
101
- targets[options.restoreTargetName] = {
102
- dependsOn: [`${options.restoreTargetName}:*`],
103
- cache: false,
104
- metadata: {
105
- technologies,
106
- description: 'Restore all .NET projects in this directory',
107
- help: {
108
- command: 'dotnet restore --help',
109
- example: {},
110
- },
111
- },
112
- };
113
- }
114
- else {
115
- const { info } = projectInfos[0];
116
- targets[options.restoreTargetName] = {
117
- command: 'dotnet restore',
118
- options: {
119
- cwd: '{projectRoot}',
120
- },
121
- cache: true,
122
- inputs: [
123
- '{projectRoot}/**/*.{cs,csproj,fs,fsproj,vb,vbproj}',
124
- // { externalDependencies: info.packageReferences },
125
- ],
126
- outputs: ['{projectRoot}/obj'],
127
- metadata: {
128
- technologies,
129
- description: 'Restore .NET dependencies',
130
- help: {
131
- command: 'dotnet restore --help',
132
- example: {},
133
- },
134
- },
135
- };
136
- }
137
- }
138
- function addBuildTargets(targets, projectInfos, options, hasMultipleProjects, baseInputs, technologies) {
139
- if (hasMultipleProjects) {
140
- // Create project-specific build targets
141
- for (const { fileName, projectName } of projectInfos) {
142
- const projectSpecificBuildTarget = `${options.buildTargetName}:${projectName}`;
143
- targets[projectSpecificBuildTarget] = {
144
- command: 'dotnet build',
145
- options: {
146
- cwd: '{projectRoot}',
147
- // .NET CLI generally will build dependencies and restore automatically,
148
- // but Nx's task graph is already handling that so we skip it here to ensure
149
- // we aren't rebuilding or restoring more than necessary.
150
- args: [fileName, '--no-restore', '--no-dependencies'],
151
- },
152
- dependsOn: [`${options.restoreTargetName}:${projectName}`, '^build'],
153
- cache: true,
154
- inputs: baseInputs,
155
- outputs: [
156
- '{projectRoot}/bin',
157
- '{projectRoot}/obj',
158
- '{workspaceRoot}/artifacts/bin/{projectName}',
159
- '{workspaceRoot}/artifacts/obj/{projectName}',
160
- ],
161
- metadata: {
162
- technologies,
163
- description: `Build the ${fileName} project`,
164
- help: {
165
- command: 'dotnet build --help',
166
- example: {
167
- options: {
168
- configuration: 'Release',
169
- },
170
- },
171
- },
172
- },
173
- };
174
- }
175
- // Create umbrella build target
176
- targets[options.buildTargetName] = {
177
- dependsOn: [`${options.buildTargetName}:*`],
178
- cache: false,
179
- metadata: {
180
- technologies,
181
- description: 'Build all .NET projects in this directory',
182
- help: {
183
- command: 'dotnet build --help',
184
- example: {
185
- options: {
186
- configuration: 'Release',
187
- },
188
- },
189
- },
190
- },
191
- };
192
- }
193
- else {
194
- targets[options.buildTargetName] = {
195
- command: 'dotnet build',
196
- options: {
197
- cwd: '{projectRoot}',
198
- // .NET CLI generally will build dependencies and restore automatically,
199
- // but Nx's task graph is already handling that so we skip it here to ensure
200
- // we aren't rebuilding or restoring more than necessary.
201
- args: ['--no-restore', '--no-dependencies'],
202
- },
203
- dependsOn: [options.restoreTargetName, '^build'],
204
- cache: true,
205
- inputs: baseInputs,
206
- outputs: ['{projectRoot}/bin', '{projectRoot}/obj'],
207
- metadata: {
208
- technologies,
209
- description: 'Build the .NET project',
210
- help: {
211
- command: 'dotnet build --help',
212
- example: {
213
- options: {
214
- configuration: 'Release',
215
- },
216
- },
217
- },
218
- },
219
- };
220
- }
221
- }
222
- function addTestTargets(targets, projectInfos, options, hasMultipleProjects, baseInputs, technologies) {
223
- if (hasMultipleProjects) {
224
- // Create project-specific test targets for each test project
225
- for (const { fileName, projectName, info } of projectInfos) {
226
- if (info.isTestProject) {
227
- const projectSpecificTestTarget = `${options.testTargetName}:${projectName}`;
228
- targets[projectSpecificTestTarget] = {
229
- command: 'dotnet test',
230
- options: {
231
- cwd: '{projectRoot}',
232
- // .NET CLI generally will build dependencies and restore automatically,
233
- // but Nx's task graph is already handling that so we skip it here to ensure
234
- // we aren't rebuilding or restoring more than necessary.
235
- args: [fileName, '--no-dependencies', '--no-build'],
236
- },
237
- dependsOn: [`${options.buildTargetName}:${projectName}`],
238
- cache: true,
239
- inputs: [
240
- ...baseInputs,
241
- // { externalDependencies: info.packageReferences },
242
- ],
243
- outputs: ['{projectRoot}/TestResults'],
244
- metadata: {
245
- technologies,
246
- description: `Run tests for ${fileName}`,
247
- help: {
248
- command: 'dotnet test --help',
249
- example: {
250
- options: {
251
- logger: 'trx',
252
- },
253
- },
254
- },
255
- },
256
- };
257
- }
258
- }
259
- // Create umbrella test target
260
- targets[options.testTargetName] = {
261
- dependsOn: [`${options.testTargetName}:*`],
262
- cache: false,
263
- metadata: {
264
- technologies,
265
- description: 'Run all .NET tests in this directory',
266
- help: {
267
- command: 'dotnet test --help',
268
- example: {
269
- options: {
270
- logger: 'trx',
271
- },
272
- },
273
- },
274
- },
275
- };
276
- }
277
- else {
278
- const { info } = projectInfos[0];
279
- targets[options.testTargetName] = {
280
- command: 'dotnet test',
281
- options: {
282
- cwd: '{projectRoot}',
283
- args: ['--no-build'],
284
- },
285
- dependsOn: [options.buildTargetName],
286
- cache: true,
287
- inputs: [
288
- ...baseInputs,
289
- // { externalDependencies: info.packageReferences }
290
- ],
291
- outputs: ['{projectRoot}/TestResults'],
292
- metadata: {
293
- technologies,
294
- description: 'Run .NET tests',
295
- help: {
296
- command: 'dotnet test --help',
297
- example: {
298
- options: {
299
- logger: 'trx',
300
- },
301
- },
302
- },
303
- },
304
- };
305
- }
306
- }
307
- function addCleanTargets(targets, projectInfos, options, hasMultipleProjects, technologies) {
308
- if (hasMultipleProjects) {
309
- // Create project-specific clean targets
310
- for (const { fileName, projectName } of projectInfos) {
311
- const projectSpecificCleanTarget = `${options.cleanTargetName}:${projectName}`;
312
- targets[projectSpecificCleanTarget] = {
313
- command: 'dotnet clean',
314
- options: {
315
- cwd: '{projectRoot}',
316
- args: [fileName],
317
- },
318
- cache: false,
319
- metadata: {
320
- technologies,
321
- description: `Clean ${fileName} build outputs`,
322
- help: {
323
- command: 'dotnet clean --help',
324
- example: {},
325
- },
326
- },
327
- };
328
- }
329
- // Create umbrella clean target
330
- targets[options.cleanTargetName] = {
331
- dependsOn: [`${options.cleanTargetName}:*`],
332
- cache: false,
333
- metadata: {
334
- technologies,
335
- description: 'Clean all .NET projects in this directory',
336
- help: {
337
- command: 'dotnet clean --help',
338
- example: {},
339
- },
340
- },
341
- };
342
- }
343
- else {
344
- targets[options.cleanTargetName] = {
345
- command: 'dotnet clean',
346
- options: {
347
- cwd: '{projectRoot}',
348
- },
349
- cache: false,
350
- metadata: {
351
- technologies,
352
- description: 'Clean .NET build outputs',
353
- help: {
354
- command: 'dotnet clean --help',
355
- example: {},
356
- },
357
- },
358
- };
359
- }
360
- }
361
- function addPublishTargets(targets, projectInfos, options, hasMultipleProjects, baseInputs, technologies) {
362
- if (hasMultipleProjects) {
363
- // Create project-specific publish targets for executable projects
364
- for (const { fileName, projectName, info } of projectInfos) {
365
- if (info.isExecutable) {
366
- const projectSpecificPublishTarget = `${options.publishTargetName}:${projectName}`;
367
- targets[projectSpecificPublishTarget] = {
368
- command: 'dotnet publish',
369
- options: {
370
- cwd: '{projectRoot}',
371
- // .NET CLI generally will build dependencies and restore automatically,
372
- // but Nx's task graph is already handling that so we skip it here to ensure
373
- // we aren't rebuilding or restoring more than necessary.
374
- args: [fileName, '--no-dependencies'],
375
- },
376
- dependsOn: [`${options.buildTargetName}:${projectName}`],
377
- cache: true,
378
- inputs: baseInputs,
379
- outputs: ['{projectRoot}/bin/*/publish'],
380
- metadata: {
381
- technologies,
382
- description: `Publish ${fileName} for deployment`,
383
- help: {
384
- command: 'dotnet publish --help',
385
- example: {
386
- options: {
387
- configuration: 'Release',
388
- runtime: 'win-x64',
389
- },
390
- },
391
- },
392
- },
393
- };
394
- }
395
- }
396
- // Create umbrella publish target
397
- targets[options.publishTargetName] = {
398
- dependsOn: [`${options.publishTargetName}:*`],
399
- cache: false,
400
- metadata: {
401
- technologies,
402
- description: 'Publish all executable .NET projects',
403
- help: {
404
- command: 'dotnet publish --help',
405
- example: {
406
- options: {
407
- configuration: 'Release',
408
- runtime: 'win-x64',
409
- },
410
- },
411
- },
412
- },
413
- };
414
- }
415
- else {
416
- targets[options.publishTargetName] = {
417
- command: 'dotnet publish',
418
- options: {
419
- cwd: '{projectRoot}',
420
- // .NET CLI generally will build dependencies and restore automatically,
421
- // but Nx's task graph is already handling that so we skip it here to ensure
422
- // we aren't rebuilding or restoring more than necessary.
423
- args: ['--no-dependencies'],
424
- },
425
- dependsOn: [options.buildTargetName],
426
- cache: true,
427
- inputs: baseInputs,
428
- outputs: ['{projectRoot}/bin/*/publish'],
429
- metadata: {
430
- technologies,
431
- description: 'Publish .NET executable for deployment',
432
- help: {
433
- command: 'dotnet publish --help',
434
- example: {
435
- options: {
436
- configuration: 'Release',
437
- runtime: 'win-x64',
438
- },
439
- },
440
- },
441
- },
442
- };
443
- }
444
- }
445
- function addPackTargets(targets, projectInfos, options, hasMultipleProjects, baseInputs, technologies) {
446
- if (hasMultipleProjects) {
447
- // Create project-specific pack targets for library projects
448
- for (const { fileName, projectName, info } of projectInfos) {
449
- if (!info.isExecutable && !info.isTestProject) {
450
- const projectSpecificPackTarget = `${options.packTargetName}:${projectName}`;
451
- targets[projectSpecificPackTarget] = {
452
- command: 'dotnet pack',
453
- options: {
454
- cwd: '{projectRoot}',
455
- // .NET CLI generally will build dependencies and restore automatically,
456
- // but Nx's task graph is already handling that so we skip it here to ensure
457
- // we aren't rebuilding or restoring more than necessary.
458
- args: [fileName, '--no-dependencies'],
459
- },
460
- dependsOn: [`${options.buildTargetName}:${projectName}`],
461
- cache: true,
462
- inputs: baseInputs,
463
- outputs: ['{projectRoot}/bin/*/*.nupkg'],
464
- metadata: {
465
- technologies,
466
- description: `Create NuGet package for ${fileName}`,
467
- help: {
468
- command: 'dotnet pack --help',
469
- example: {
470
- options: {
471
- configuration: 'Release',
472
- },
473
- },
474
- },
475
- },
476
- };
477
- }
478
- }
479
- // Create umbrella pack target
480
- targets[options.packTargetName] = {
481
- dependsOn: [`${options.packTargetName}:*`],
482
- cache: false,
483
- metadata: {
484
- technologies,
485
- description: 'Pack all .NET library projects',
486
- help: {
487
- command: 'dotnet pack --help',
488
- example: {
489
- options: {
490
- configuration: 'Release',
491
- },
492
- },
493
- },
494
- },
495
- };
496
- }
497
- else {
498
- targets[options.packTargetName] = {
499
- command: 'dotnet pack',
500
- options: {
501
- cwd: '{projectRoot}',
502
- // .NET CLI generally will build dependencies and restore automatically,
503
- // but Nx's task graph is already handling that so we skip it here to ensure
504
- // we aren't rebuilding or restoring more than necessary.
505
- args: ['--no-dependencies'],
506
- },
507
- dependsOn: [options.buildTargetName],
508
- cache: true,
509
- inputs: baseInputs,
510
- outputs: ['{projectRoot}/bin/*/*.nupkg'],
511
- metadata: {
512
- technologies,
513
- description: 'Create NuGet package',
514
- help: {
515
- command: 'dotnet pack --help',
516
- example: {
517
- options: {
518
- configuration: 'Release',
519
- },
520
- },
521
- },
522
- },
523
- };
524
- }
525
- }
package/plugin.ts DELETED
@@ -1,5 +0,0 @@
1
- export {
2
- createNodesV2,
3
- DotNetPluginOptions,
4
- createDependencies,
5
- } from './src/plugins/plugin';
package/src/index.ts DELETED
@@ -1,6 +0,0 @@
1
- // Re-export everything from the new plugin structure
2
- export {
3
- createNodesV2,
4
- DotNetPluginOptions,
5
- createDependencies,
6
- } from './plugins/plugin';