Skip to content

Commit 515a67e

Browse files
committed
feat: update for nx 17
1 parent 6ec4eee commit 515a67e

File tree

13 files changed

+193
-62
lines changed

13 files changed

+193
-62
lines changed

libs/ddd/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@angular-architects/ddd",
3-
"version": "3.1.1",
3+
"version": "17.0.3",
44
"license": "MIT",
55
"author": "Manfred Steyer",
66
"description": "Nx plugin for structuring a monorepo with domains and layers",
@@ -12,7 +12,7 @@
1212
"@ngrx/schematics": "^16.0.0"
1313
},
1414
"peerDependencies": {
15-
"@nx/angular": ">=16.0.0"
15+
"@nx/angular": "^17.0.0"
1616
},
1717
"main": "src/index.js",
1818
"schematics": "./collection.json",

libs/ddd/src/generators/api/index.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { libraryGenerator } from '@nx/angular/generators';
33
import { ApiOptions } from './schema';
44
import { strings } from '@angular-devkit/core';
55
import { validateInputs } from '../utils/validate-inputs';
6+
import { deleteDefaultComponent } from '../utils/delete-default-component';
67

78
export default async function (tree: Tree, options: ApiOptions) {
89
validateInputs(options);
@@ -28,6 +29,13 @@ export default async function (tree: Tree, options: ApiOptions) {
2829
standalone: options.standalone,
2930
});
3031

32+
deleteDefaultComponent(
33+
tree,
34+
libDirectory,
35+
libName,
36+
options.name
37+
);
38+
3139
console.info(
3240
`\nHINT: Don\'t forget to extend the rules in your .eslintrc to allow selected domains to access this API.\nFor this, add the tag domain:${domain}/${libName} to the respective domains' rule sets.\n `
3341
);

libs/ddd/src/generators/domain/index.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
import {
22
Tree,
33
formatFiles,
4-
readWorkspaceConfiguration,
54
installPackagesTask,
65
generateFiles,
76
joinPathFragments,
8-
readProjectConfiguration,
97
addDependenciesToPackageJson,
108
names,
9+
readNxJson,
1110
} from '@nx/devkit';
11+
12+
import { readPackageJson } from '@nx/workspace'
13+
1214
import { libraryGenerator, applicationGenerator } from '@nx/angular/generators';
1315
import { strings } from '@angular-devkit/core';
1416
import { DomainOptions } from './schema';
@@ -18,6 +20,8 @@ import { insertImport } from '@nx/js';
1820
import { insertNgModuleImport } from '@nx/angular/src/generators/utils';
1921
import * as ts from 'typescript';
2022
import { NGRX_VERSION } from '../utils/ngrx-version';
23+
import { getNpmScope } from '../utils/npm';
24+
import { deleteDefaultComponent } from '../utils/delete-default-component';
2125

2226
function convertToStandaloneApp(
2327
tree: Tree,
@@ -120,13 +124,16 @@ export default async function (tree: Tree, options: DomainOptions) {
120124
});
121125
}
122126

123-
const wsConfig = readWorkspaceConfiguration(tree);
127+
const wsConfig = readNxJson(tree);
128+
const npmScope = getNpmScope(tree);
129+
// const wsConfig = readWorkspaceConfiguration(tree);
130+
124131
if (options.addApp && options.standalone) {
125132
convertToStandaloneApp(tree, {
126133
name: options.name,
127134
ngrx: options.ngrx || false,
128135
srcRoot: appSrcFolder,
129-
npmScope: wsConfig.npmScope,
136+
npmScope: npmScope,
130137
});
131138
}
132139

@@ -164,6 +171,13 @@ export default async function (tree: Tree, options: DomainOptions) {
164171
);
165172
}
166173

174+
deleteDefaultComponent(
175+
tree,
176+
libNameAndDirectory,
177+
'domain',
178+
libName
179+
);
180+
167181
await formatFiles(tree);
168182
return () => {
169183
installPackagesTask(tree);

libs/ddd/src/generators/feature/index.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
import { addNgrxImportsToDomain } from '../utils/add-ngrx-imports-to-domain';
1919
import { fileContains } from '../utils/fileContains';
2020
import { getWorkspaceScope } from '../utils/get-workspace-scope';
21+
import { deleteDefaultComponent } from '../utils/delete-default-component';
2122

2223
export default async function (tree: Tree, options: FeatureOptions) {
2324
options.app ??= options.domain;
@@ -101,11 +102,13 @@ export default async function (tree: Tree, options: FeatureOptions) {
101102
);
102103
}
103104

105+
const dir = featureDirectory
106+
? `${domainNameAndDirectory}/${featureDirectory}`
107+
: `${domainNameAndDirectory}`;
108+
104109
await libraryGenerator(tree, {
105110
name: featureFolderName,
106-
directory: featureDirectory
107-
? `${domainNameAndDirectory}/${featureDirectory}`
108-
: `${domainNameAndDirectory}`,
111+
directory: dir,
109112
tags: `domain:${domainName},type:feature`,
110113
prefix: domainNameAndDirectoryDasherized,
111114
publishable: options.type === 'publishable',
@@ -171,6 +174,13 @@ export default async function (tree: Tree, options: FeatureOptions) {
171174
});
172175
}
173176

177+
deleteDefaultComponent(
178+
tree,
179+
dir,
180+
featureFolderName,
181+
domainNameAndDirectoryDasherized
182+
);
183+
174184
await formatFiles(tree);
175185
return () => {
176186
installPackagesTask(tree);

libs/ddd/src/generators/ui/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { libraryGenerator } from '@nx/angular/generators';
33
import { UiOptions } from './schema';
44
import { strings } from '@angular-devkit/core';
55
import { validateInputs } from '../utils/validate-inputs';
6+
import { deleteDefaultComponent } from '../utils/delete-default-component';
67

78
export default async function (tree: Tree, options: UiOptions) {
89
validateInputs(options);
@@ -24,5 +25,13 @@ export default async function (tree: Tree, options: UiOptions) {
2425
importPath: options.importPath,
2526
standalone: options.standalone,
2627
});
28+
29+
deleteDefaultComponent(
30+
tree,
31+
libDirectory,
32+
libName,
33+
options.name
34+
);
35+
2736
await formatFiles(tree);
2837
}

libs/ddd/src/generators/util/index.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { libraryGenerator } from '@nx/angular/generators';
33
import { UtilOptions } from './schema';
44
import { strings } from '@angular-devkit/core';
55
import { validateInputs } from '../utils/validate-inputs';
6+
import { deleteDefaultComponent } from '../utils/delete-default-component';
67

78
export default async function (tree: Tree, options: UtilOptions) {
89
validateInputs(options);
@@ -25,5 +26,12 @@ export default async function (tree: Tree, options: UtilOptions) {
2526
standalone: options.standalone,
2627
});
2728

29+
deleteDefaultComponent(
30+
tree,
31+
libDirectory,
32+
libName,
33+
options.name
34+
);
35+
2836
await formatFiles(tree);
2937
}

libs/ddd/src/generators/utils/add-ngrx-imports-to-domain.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { insertNgModuleProperty } from '@nx/angular/src/generators/utils';
22
import { Tree } from '@nx/devkit';
3-
import { classify, dasherize } from '@nx/workspace/src/utils/strings';
4-
import { addImportToNgModule, addImportToTsModule } from './addToNgModule';
3+
import { classify, dasherize } from '@nx/devkit/src/utils/string-utils';
4+
import { addImportToTsModule } from './addToNgModule';
55
import { fileContains } from './fileContains';
66

77
/**
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { Tree } from '@nx/devkit';
2+
import { dasherize } from '@nx/devkit/src/utils/string-utils';
3+
import * as path from 'path';
4+
5+
export function deleteDefaultComponent(tree: Tree, directory: string, libName: string, prefix: string): void {
6+
const dirToDel = path.join('libs', directory, dasherize(libName), 'src', 'lib', dasherize(directory + '-' + libName));
7+
let deleted = false;
8+
if (tree.exists(dirToDel)) {
9+
tree.delete(dirToDel);
10+
deleted = true;
11+
}
12+
13+
const index = path.join('libs', directory, dasherize(libName), 'src', 'index.ts');
14+
if (deleted && tree.exists(index)) {
15+
const contents = tree.read(index, 'utf-8');
16+
const rest = contents.split('\n').slice(1);
17+
tree.write(index, (rest || []).join('\n'));
18+
}
19+
20+
}
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import { Tree, readWorkspaceConfiguration } from '@nx/devkit';
1+
import { Tree } from '@nx/devkit';
2+
import { getNpmScope } from './npm';
23

34
export function getWorkspaceScope(tree: Tree) {
4-
const wsConfig = readWorkspaceConfiguration(tree);
5-
const workspaceName = `@${wsConfig.npmScope}`;
6-
return workspaceName;
5+
return getNpmScope(tree);
76
}

libs/ddd/src/generators/utils/npm.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Tree, readJson } from "@nx/devkit";
2+
3+
export function getNpmScope(tree: Tree) {
4+
const { name } = tree.exists('package.json')
5+
? readJson<{ name?: string }>(tree, 'package.json')
6+
: { name: null };
7+
8+
if (name?.startsWith('@')) {
9+
return name.split('/')[0];
10+
}
11+
}

0 commit comments

Comments
 (0)