Skip to content
This repository was archived by the owner on Dec 9, 2024. It is now read-only.

Commit f889a51

Browse files
committed
feat(nx-ngrok): add 'serverTarget' rename migration
1 parent 76b9930 commit f889a51

File tree

6 files changed

+134
-4
lines changed

6 files changed

+134
-4
lines changed

packages/nx-ngrok/.eslintrc.json

+6-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@
1515
"rules": {}
1616
},
1717
{
18-
"files": ["./package.json", "./generators.json", "./executors.json"],
18+
"files": [
19+
"./package.json",
20+
"./generators.json",
21+
"./executors.json",
22+
"./migrations.json"
23+
],
1924
"parser": "jsonc-eslint-parser",
2025
"rules": {
2126
"@nrwl/nx/nx-plugin-checks": "error"

packages/nx-ngrok/migrations.json

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"generators": {
3+
"rename-servertarget-to-target": {
4+
"version": "1.2.0",
5+
"description": "Rename 'serverTarget' setting to 'target'",
6+
"cli": "nx",
7+
"implementation": "./src/migrations/1.2.0/rename-servertarget-to-target"
8+
}
9+
}
10+
}

packages/nx-ngrok/project.json

+7-3
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,14 @@
2323
"format": ["cjs"],
2424
"minify": true,
2525
"esbuildOptions": {
26-
"outExtension": { ".js": ".js" }
26+
"outExtension": {
27+
".js": ".js"
28+
}
2729
},
2830
"sourcemap": true,
2931
"additionalEntryPoints": [
30-
"packages/nx-ngrok/src/executors/tunnel/executor.ts"
32+
"packages/nx-ngrok/src/executors/tunnel/executor.ts",
33+
"packages/nx-ngrok/src/migrations/1.2.0/rename-servertarget-to-target"
3134
],
3235
"external": ["@nrwl/devkit", "ngrok"],
3336
"assets": [
@@ -87,7 +90,8 @@
8790
"packages/nx-ngrok/**/*.ts",
8891
"packages/nx-ngrok/generators.json",
8992
"packages/nx-ngrok/executors.json",
90-
"packages/nx-ngrok/package.json"
93+
"packages/nx-ngrok/package.json",
94+
"packages/nx-ngrok/migrations.json"
9195
]
9296
},
9397
"configurations": {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './rename-servertarget-to-target';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import {
2+
addProjectConfiguration,
3+
readProjectConfiguration,
4+
} from '@nrwl/devkit';
5+
import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
6+
7+
import update from './rename-servertarget-to-target';
8+
9+
describe('Migration - rename-servertarget-to-target', () => {
10+
it('should rename serverTarget to target', async () => {
11+
const tree = createTreeWithEmptyWorkspace({ layout: 'apps-libs' });
12+
13+
addProjectConfiguration(
14+
tree,
15+
'example',
16+
{
17+
root: 'apps/example',
18+
projectType: 'application',
19+
targets: {
20+
dev: {
21+
executor: 'nx-ngrok:tunnel',
22+
options: {
23+
serverTarget: 'my-app:serve',
24+
},
25+
},
26+
},
27+
},
28+
true
29+
);
30+
31+
await update(tree);
32+
33+
const config = readProjectConfiguration(tree, 'example');
34+
35+
expect(config.targets?.dev.options).not.toHaveProperty('serverTarget');
36+
expect(config.targets?.dev.options).toHaveProperty(
37+
'target',
38+
'my-app:serve'
39+
);
40+
});
41+
42+
it('should not add target to configurations without a serverTarget', async () => {
43+
const tree = createTreeWithEmptyWorkspace({ layout: 'apps-libs' });
44+
45+
addProjectConfiguration(
46+
tree,
47+
'example',
48+
{
49+
root: 'apps/example',
50+
projectType: 'application',
51+
targets: {
52+
dev: {
53+
executor: 'nx-ngrok:tunnel',
54+
options: {
55+
port: 3000,
56+
},
57+
},
58+
},
59+
},
60+
true
61+
);
62+
63+
await update(tree);
64+
65+
const config = readProjectConfiguration(tree, 'example');
66+
67+
expect(config.targets?.dev.options).not.toHaveProperty('serverTarget');
68+
expect(config.targets?.dev.options).not.toHaveProperty('target');
69+
70+
expect(config.targets?.dev.options).toHaveProperty('port', 3000);
71+
});
72+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import type { Tree } from '@nrwl/devkit';
2+
3+
import {
4+
formatFiles,
5+
getProjects,
6+
updateProjectConfiguration,
7+
} from '@nrwl/devkit';
8+
9+
export async function update(tree: Tree) {
10+
const projects = getProjects(tree);
11+
12+
projects.forEach((config, name) => {
13+
let shouldUpdate = false;
14+
15+
Object.entries(config.targets ?? {})?.forEach(([targetName, target]) => {
16+
if (target.executor === 'nx-ngrok:tunnel') {
17+
if (
18+
Object.prototype.hasOwnProperty.call(target.options, 'serverTarget')
19+
) {
20+
const value = target.options['serverTarget'];
21+
22+
if (config.targets?.[targetName].options['serverTarget']) {
23+
shouldUpdate = true;
24+
25+
delete config.targets[targetName].options['serverTarget'];
26+
config.targets[targetName].options['target'] = value;
27+
}
28+
}
29+
}
30+
});
31+
32+
if (shouldUpdate) updateProjectConfiguration(tree, name, config);
33+
});
34+
35+
await formatFiles(tree);
36+
}
37+
38+
export default update;

0 commit comments

Comments
 (0)