Faire cela de manière asynchrone est assez facile. C'est particulièrement utile si vous êtes préoccupé par le blocage du fil de discussion (probable). Sinon, je suggère la réponse de Peter Lyon.
const fs = require('fs');
const fileName = './file.json';
const file = require(fileName);
file.key = "new value";
fs.writeFile(fileName, JSON.stringify(file), function writeJSON(err) {
if (err) return console.log(err);
console.log(JSON.stringify(file));
console.log('writing to ' + fileName);
});
L'inconvénient est que le json est écrit dans le fichier sur une seule ligne et n'est pas prétérité. ex :
{
"key": "value"
}
sera...
{"key": "value"}
Pour éviter cela, il suffit d'ajouter ces deux arguments supplémentaires à l'option JSON.stringify
JSON.stringify(file, null, 2)
null
- représente la fonction de remplacement. (dans ce cas nous ne voulons pas modifier le processus)
2
- représente les espaces à indenter.