将文件中的字符串替换为 nodejs
2022-08-30 00:52:27
我使用 md5 grunt 任务来生成 MD5 文件名。现在我想用任务回调中的新文件名重命名HTML文件中的源代码。我想知道最简单的方法是什么。
我使用 md5 grunt 任务来生成 MD5 文件名。现在我想用任务回调中的新文件名重命名HTML文件中的源代码。我想知道最简单的方法是什么。
您可以使用简单的正则表达式:
var result = fileAsString.replace(/string to be replaced/g, 'replacement');
所以。。。
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);
});
});
由于替换对我不起作用,因此我创建了一个简单的 npm 包替换文件,以快速替换一个或多个文件中的文本。这部分基于@asgoth的答案。
编辑(2016 年 10 月 3 日):该软件包现在支持承诺和 globs,并且已更新使用说明以反映这一点。
编辑(2018年3月16日):该软件包现在每月下载量已超过10万次,并已扩展了其他功能以及CLI工具。
安装:
npm install replace-in-file
需要模块
const replace = require('replace-in-file');
指定替换选项
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',
};
带有承诺的异步替换:
replace(options)
.then(changedFiles => {
console.log('Modified files:', changedFiles.join(', '));
})
.catch(error => {
console.error('Error occurred:', error);
});
使用回调的异步替换:
replace(options, (error, changedFiles) => {
if (error) {
return console.error('Error occurred:', error);
}
console.log('Modified files:', changedFiles.join(', '));
});
同步替换:
try {
let changedFiles = replace.sync(options);
console.log('Modified files:', changedFiles.join(', '));
}
catch (error) {
console.error('Error occurred:', error);
}