Поскольку замена не работала для меня, я создал простой пакет npm replace-in-file , чтобы быстро заменить текст в одном или нескольких файлах. Это частично основано на ответе @ asgoth.
Edit (3 октября 2016 г.): пакет теперь поддерживает обещания и глобусы, а инструкции по использованию были обновлены, чтобы отразить это.
Изменить ( 16 марта 2018 г.): этот пакет собрал более 100 тыс. Ежемесячных загрузок и был расширен дополнительными функциями, а также инструментом 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);
}