diff --git a/lib/prepare_release.js b/lib/prepare_release.js index 62083743..2dff11d0 100644 --- a/lib/prepare_release.js +++ b/lib/prepare_release.js @@ -2,7 +2,6 @@ import path from 'node:path'; import { promises as fs, existsSync, readFileSync } from 'node:fs'; import semver from 'semver'; -import { replaceInFile } from 'replace-in-file'; import { forceRunAsync, runAsync, runSync } from './run.js'; import { writeJson, readJson } from './file.js'; @@ -518,11 +517,24 @@ export default class ReleasePreparation extends Session { async updateREPLACEMEs() { const { newVersion } = this; - await replaceInFile({ - files: 'doc/api/*.md', - from: /REPLACEME/g, - to: `v${newVersion}` - }); + const promises = []; + for await (const file of fs.glob('doc/api/*.md')) { + promises.push(fs.open(file, 'r+').then(async fd => { + try { + const fileContent = await fd.readFile('utf-8'); + if (fileContent.includes('REPLACEME')) { + const { bytesWritten } = + await fd.write(fileContent.replaceAll('REPLACEME', `v${newVersion}`), 0, 'utf-8'); + await fd.truncate(bytesWritten); + } + // eslint-disable-next-line promise/always-return + } finally { + // TODO: replace with `using` syntax when dropping support for Node.js 22 + await fd.close(); + } + })); + } + await Promise.all(promises); } async updateMainChangelog() { diff --git a/package-lock.json b/package-lock.json index abc7c6e2..d7e09396 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,6 @@ "lodash", "log-symbols", "ora", - "replace-in-file", "semver", "smol-toml", "undici", @@ -51,7 +50,6 @@ "lodash": "^4.17.21", "log-symbols": "^7.0.0", "ora": "^9.0.0", - "replace-in-file": "^8.3.0", "semver": "^7.7.1", "smol-toml": "^1.7.0", "undici": "^8.3.0", @@ -8576,37 +8574,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/replace-in-file": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-8.4.0.tgz", - "integrity": "sha512-D28k8jy2LtUGbCzCnR3znajaTWIjJ/Uee3UdodzcHRxE7zn6NmYW/dcSqyivnsYU3W+MxdX6SbF28NvJ0GRoLA==", - "inBundle": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.6.2", - "glob": "^13.0.0", - "yargs": "^18.0.0" - }, - "bin": { - "replace-in-file": "bin/cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/replace-in-file/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", diff --git a/package.json b/package.json index efc6a82a..4fa21223 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,6 @@ "lodash": "^4.17.21", "log-symbols": "^7.0.0", "ora": "^9.0.0", - "replace-in-file": "^8.3.0", "semver": "^7.7.1", "smol-toml": "^1.7.0", "undici": "^8.3.0",