js/scripts/buildConfig.js (23 lines of code) (raw):

// Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 const fs = require('fs-extra'); const path = require('path'); const prettier = require('prettier'); const process = require('process'); const appRoot = `${process.cwd()}`; const srcDir = `${appRoot}/../config/`; const destDir = path.join(appRoot, 'src'); const DEFAULT_CONFIG = 'version3'; const COMMENT = '// This file is generated by scripts/buildConfig.js \n'; const getVersion = fileName => fileName.split('.json')[0].replace('v', 'version'); const configs = {}; fs.readdirSync(srcDir).forEach(file => { if (file.indexOf('json') > -1) { const config = JSON.parse(fs.readFileSync(path.join(srcDir, file))); const version = getVersion(file); configs[version] = config; } }); configs.defaults = Object.assign({}, configs[DEFAULT_CONFIG]); const code = `${COMMENT} export default ${JSON.stringify(configs)}`; const destFile = path.join(destDir, 'configs.js'); fs.removeSync(destFile); fs.writeFileSync(destFile, prettier.format(code));