Skip to content

Commit 42906d1

Browse files
committed
feat: add support for full semantic versioning in engines field
Fixes #21 Add support for full semantic versioning in `engines` field of `package.json`. * **action.yml** - Add a new input `updaters.engines.fullVersion` to enable full semantic versioning. * **src/index.ts** - Add a new constant `updatersEnginesFullVersion` to get the input for full semantic versioning. - Add `updatersEnginesFullVersion` to the `inputs` object. * **src/updateNodeVersions.ts** - Add `updatersEnginesFullVersion` to the `Inputs` type. - Pass `updatersEnginesFullVersion` to the `engines` function. * **src/updaters/engines.ts** - Add a new parameter `fullVersion` to the `engines` function. - Update the `engines` function to set the `engines.node` field to `>=` followed by the full version if `fullVersion` is true. * **README.md** - Update the `Engines` section to mention support for full semantic versioning. - Add an example of using the `updaters.engines.fullVersion` input. --- For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/hongaar/update-node-versions/issues/21?shareId=XXXX-XXXX-XXXX-XXXX).
1 parent 0b2ce8f commit 42906d1

File tree

5 files changed

+25
-3
lines changed

5 files changed

+25
-3
lines changed

README.md

+15
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,20 @@ available:
8686
}
8787
}
8888
```
89+
If you want to use full semantic versioning for the `engines` field, you can enable the `updaters.engines.fullVersion` input.
90+
```yaml
91+
- uses: hongaar/update-node-versions@v2
92+
with:
93+
updaters.engines.fullVersion: true
94+
```
95+
This will update the `engines` field to include the full version.
96+
```json
97+
{
98+
"engines": {
99+
"node": ">=18.0.0"
100+
}
101+
}
102+
```
89103
- **Files**
90104
This will update arbitrary files in your repository. You can specify a glob
91105
pattern of files to update, a regex to match and a replacement template to
@@ -112,6 +126,7 @@ available:
112126
| `updaters.workflows` | `true` | Update GitHub workflows. |
113127
| `updaters.workflows.variable` | `"node-version"` | Use this name as the matrix strategy variable to update the Node versions in. |
114128
| `updaters.engines` | `true` | Update package.json `engines`. |
129+
| `updaters.engines.fullVersion`| `false` | Use full semantic versioning for engines. |
115130
| `updaters.files` | `false` | Update arbitrary files. |
116131
| `updaters.files.glob` | | Glob pattern for files to update. |
117132
| `updaters.files.regex` | | Matches will be replaced with the template. |

action.yml

+4
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ inputs:
2828
description: Update package.json `engines`
2929
required: false
3030
default: true
31+
updaters.engines.fullVersion:
32+
description: Use full semantic versioning for engines
33+
required: false
34+
default: false
3135
updaters.files:
3236
description: Update arbitrary files
3337
required: false

src/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const updatersFiles = getBooleanInput("updaters.files");
1717
const updatersFilesGlob = getMultilineInput("updaters.files.glob");
1818
const updatersFilesRegex = getMultilineInput("updaters.files.regex");
1919
const updatersFilesTemplate = getMultilineInput("updaters.files.template");
20+
const updatersEnginesFullVersion = getBooleanInput("updaters.engines.fullVersion");
2021

2122
const inputs = {
2223
versions,
@@ -28,6 +29,7 @@ const inputs = {
2829
updatersFilesGlob,
2930
updatersFilesRegex,
3031
updatersFilesTemplate,
32+
updatersEnginesFullVersion,
3133
};
3234

3335
updateNodeVersions(inputs)

src/updateNodeVersions.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ type Inputs = {
1717
updatersFilesGlob: string[];
1818
updatersFilesRegex: string[];
1919
updatersFilesTemplate: string[];
20+
updatersEnginesFullVersion: boolean;
2021
};
2122

2223
type Outputs = {
@@ -47,7 +48,7 @@ export async function updateNodeVersions(inputs: Inputs) {
4748
}
4849

4950
if (inputs.updatersEngines) {
50-
await engines(outputs.versions);
51+
await engines(outputs.versions, process.cwd(), inputs.updatersEnginesFullVersion);
5152
}
5253

5354
if (inputs.updatersFiles) {

src/updaters/engines.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ async function getPackageJson(cwd = process.cwd()) {
1616
return;
1717
}
1818

19-
export async function engines(versions: number[], cwd = process.cwd()) {
19+
export async function engines(versions: number[], cwd = process.cwd(), fullVersion = false) {
2020
const packageJson = await getPackageJson(cwd);
2121

2222
if (!packageJson) {
@@ -25,7 +25,7 @@ export async function engines(versions: number[], cwd = process.cwd()) {
2525

2626
if (packageJson.engines && packageJson.engines["node"]) {
2727
info(`Updating engines.node in package.json`);
28-
packageJson.engines["node"] = `>=${versions[0]}`;
28+
packageJson.engines["node"] = `>=${fullVersion ? versions.join(".") : versions[0]}`;
2929

3030
await writeFile(
3131
join(cwd, PACKAGE_PATH),

0 commit comments

Comments
 (0)