And*_*rle 136 javascript replace node.js gruntjs
我使用md5 grunt任务生成MD5文件名.现在我想在任务的回调中使用新文件名重命名HTML文件中的源.我想知道最简单的方法是什么.
asg*_*oth 258
你可以使用简单的正则表达式:
var result = fileAsString.replace(/string to be replaced/g, 'replacement');
Run Code Online (Sandbox Code Playgroud)
所以...
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);
});
});
Run Code Online (Sandbox Code Playgroud)
Ada*_*eis 62
由于替换不适合我,我已经创建了一个简单的npm包替换文件,以快速替换一个或多个文件中的文本.它部分基于@ asgoth的答案.
编辑(2016年10月3日):该软件包现在支持promises和globs,并且使用说明已更新以反映这一点.
编辑(2018年3月16日):该软件包现已每月下载超过10万次,并且已经扩展了其他功能以及CLI工具.
安装:
npm install replace-in-file
Run Code Online (Sandbox Code Playgroud)
需要模块
const replace = require('replace-in-file');
Run Code Online (Sandbox Code Playgroud)
指定替换选项
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',
};
Run Code Online (Sandbox Code Playgroud)
使用promise进行异步替换:
replace(options)
.then(changedFiles => {
console.log('Modified files:', changedFiles.join(', '));
})
.catch(error => {
console.error('Error occurred:', error);
});
Run Code Online (Sandbox Code Playgroud)
使用回调进行异步替换:
replace(options, (error, changedFiles) => {
if (error) {
return console.error('Error occurred:', error);
}
console.log('Modified files:', changedFiles.join(', '));
});
Run Code Online (Sandbox Code Playgroud)
同步更换:
try {
let changedFiles = replace.sync(options);
console.log('Modified files:', changedFiles.join(', '));
}
catch (error) {
console.error('Error occurred:', error);
}
Run Code Online (Sandbox Code Playgroud)
Sla*_*tow 32
也许"替换"模块(www.npmjs.org/package/replace)也适合你.它不需要您阅读然后写入文件.
改编自文档:
// 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,
});
Run Code Online (Sandbox Code Playgroud)
Ton*_*gan 25
你也可以使用属于ShellJS的'sed'函数......
$ npm install [-g] shelljs
require('shelljs/global');
sed('-i', 'search_pattern', 'replace_pattern', file);
Run Code Online (Sandbox Code Playgroud)
访问ShellJs.org了解更多示例.
Sri*_*tha 12
如果有人想使用基于 Promise 的“fs”模块来完成任务。
const fs = require('fs').promises;
// Below statements must be wrapped inside the 'async' function:
const data = await fs.readFile(someFile, 'utf8');
const result = data.replace(/string to be replaced/g, 'replacement');
await fs.writeFile(someFile, result,'utf8');
Run Code Online (Sandbox Code Playgroud)
您可以在使用流读取时处理该文件.这就像使用缓冲区但使用更方便的API.
var fs = require('fs');
function searchReplaceFile(regexpFind, replace, cssFileName) {
var file = fs.createReadStream(cssFileName, 'utf8');
var newCss = '';
file.on('data', function (chunk) {
newCss += chunk.toString().replace(regexpFind, replace);
});
file.on('end', function () {
fs.writeFile(cssFileName, newCss, function(err) {
if (err) {
return console.log(err);
} else {
console.log('Updated!');
}
});
});
searchReplaceFile(/foo/g, 'bar', 'file.txt');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
156193 次 |
| 最近记录: |