const { readFileSync, writeFileSync } = require('fs') const { resolve } = require('path') const glob = require('glob') const defaultMessages = glob .sync('./lang/.messages/**/*.json') .map(filename => readFileSync(filename, 'utf8')) .map(file => JSON.parse(file)) .reduce((messages, descriptors) => { descriptors.forEach(({ id, defaultMessage }) => { if (messages.hasOwnProperty(id)) { throw new Error(`Duplicate message id: ${id}`) } messages[id] = defaultMessage }) return messages }, {}) writeFileSync('./lang/en.json', JSON.stringify(defaultMessages, null, 2)) console.log(`> Wrote default messages to: "${resolve('./lang/en.json')}"`)