The package has been converted to an ES module and now requires Node 18 or higher. If you need support for Node 16 or below, please use version 7.x.x.
- Package has been converted to an ES module
- No longer providing a default export. Use the named exports
replaceInFile
orreplaceInFileSync
instead. - The
replace.sync
syntax is no longer available. Use the named exportreplaceInFileSync
instead. - The callback API has been removed for asynchronous replacements. Please use promises or
async/await
instead. - Configuration files provided to the CLI using the
--configFile
flag can now only be JSON. - To use a custom
fs
implementation, you must now specifyfs
config parameter for the async API, andfsSync
for the sync API. For the asynchronous APIs, the providedfs
must provide thereadFile
andwriteFile
methods. For the synchronous APIs, the providedfsSync
must provide thereadFileSync
andwriteFileSync
methods. - If a
cwd
parameter is provided, it will no longer be prefixed to each path using basic string concatenation, but rather usespath.join()
to ensure correct path concatenation.
- The
isRegex
flag is no longer required. - You can now specify a
getTargetFile
config param to modify the target file for saving the new file contents to. For example:
const options = {
files: 'path/to/files/*.html',
getTargetFile: source => `new/path/${source}`,
from: 'foo',
to: 'bar',
}
Strings provided to the from
value are now escaped for regex matching when counting of matches is enabled. This is unlikely to result in any breaking changes, but as a precaution the major version has been bumped.
From version 6.0.0 onwards, replace in file requires Node 10 or higher. If you need support for Node 8, please use version 5.x.x.
From version 5.0.0 onwards, replace in file requires Node 8 or higher. If you need support for Node 6, please use version 4.x.x.
The return value is now a results array instead of an array with changed files. The new results array includes each file that was processed, with a flag to indicate whether or not the file was changed, and optionally information about the number of matches and replacements that were made. See the readme for more details.
To update existing code and obtain an array of changed files again, simply convert the results array as follows:
const results = await replace(options);
const changedFiles = results
.filter(result => result.hasChanged)
.map(result => result.file);
- Added
countMatches
flag to count the number of matches and replacements per file #38, #42, #61 - Added
--quiet
flag for CLI to suppress success output #63 - Added
cwd
configuration parameter for network drive replacements #56
From version 3.0.0 onwards, replace in file requires Node 6 or higher. If you need support for Node 4 or 5, please use version 2.x.x.