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));