Comme replace ne fonctionnait pas pour moi, j'ai créé un simple package npm replace-in-file pour remplacer rapidement le texte dans un ou plusieurs fichiers. C'est en partie basé sur la réponse de @ asgoth.
Edit (3 octobre 2016) : Le package prend désormais en charge les promesses et les globs, et les instructions d'utilisation ont été mises à jour pour refléter cela.
Edit (16 mars 2018) : Le package a accumulé plus de 100000 téléchargements mensuels maintenant et a été étendu avec des fonctionnalités supplémentaires ainsi qu'un outil CLI.
Installer:
npm install replace-in-file
Module requis
const replace = require('replace-in-file');
Spécifier les options de remplacement
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',
};
Remplacement asynchrone avec promesses:
replace(options)
.then(changedFiles => {
console.log('Modified files:', changedFiles.join(', '));
})
.catch(error => {
console.error('Error occurred:', error);
});
Remplacement asynchrone avec rappel:
replace(options, (error, changedFiles) => {
if (error) {
return console.error('Error occurred:', error);
}
console.log('Modified files:', changedFiles.join(', '));
});
Remplacement synchrone:
try {
let changedFiles = replace.sync(options);
console.log('Modified files:', changedFiles.join(', '));
}
catch (error) {
console.error('Error occurred:', error);
}