Replace a string in a file with nodejs Replace a string in a file with nodejs javascript javascript

Replace a string in a file with nodejs


You could use simple regex:

var result = fileAsString.replace(/string to be replaced/g, 'replacement');

So...

var fs = require('fs')fs.readFile(someFile, 'utf8', function (err,data) {  if (err) {    return console.log(err);  }  var result = data.replace(/string to be replaced/g, 'replacement');  fs.writeFile(someFile, result, 'utf8', function (err) {     if (err) return console.log(err);  });});


Since replace wasn't working for me, I've created a simple npm package replace-in-file to quickly replace text in one or more files. It's partially based on @asgoth's answer.

Edit (3 October 2016): The package now supports promises and globs, and the usage instructions have been updated to reflect this.

Edit (16 March 2018): The package has amassed over 100k monthly downloads now and has been extended with additional features as well as a CLI tool.

Install:

npm install replace-in-file

Require module

const replace = require('replace-in-file');

Specify replacement options

const options = {  //Single file  files: 'path/to/file',  //Multiple files  files: [    'path/to/file',    'path/to/other/file',  ],  //Glob(s)   files: [    'path/to/files/*.html',    'another/**/*.path',  ],  //Replacement to make (string or regex)   from: /Find me/g,  to: 'Replacement',};

Asynchronous replacement with promises:

replace(options)  .then(changedFiles => {    console.log('Modified files:', changedFiles.join(', '));  })  .catch(error => {    console.error('Error occurred:', error);  });

Asynchronous replacement with callback:

replace(options, (error, changedFiles) => {  if (error) {    return console.error('Error occurred:', error);  }  console.log('Modified files:', changedFiles.join(', '));});

Synchronous replacement:

try {  let changedFiles = replace.sync(options);  console.log('Modified files:', changedFiles.join(', '));}catch (error) {  console.error('Error occurred:', error);}


Perhaps the "replace" module (www.npmjs.org/package/replace) also would work for you. It would not require you to read and then write the file.

Adapted from the documentation:

// install:npm install replace // require:var replace = require("replace");// use:replace({    regex: "string to be replaced",    replacement: "replacement string",    paths: ['path/to/your/file'],    recursive: true,    silent: true,});