configToEnv.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /* eslint-disable global-require */
  2. /* eslint-disable import/no-unresolved */
  3. const fs = require('fs');
  4. const path = require('path');
  5. const hasServerConfig = fs.existsSync(path.resolve(__dirname, 'config.js'));
  6. const hasClientConfig = fs.existsSync(path.resolve(__dirname, '../client/config.js'));
  7. if (hasServerConfig && hasClientConfig) {
  8. const serverConfig = require('./config.js');
  9. const clientConfig = require('../client/config.js');
  10. let envTemplate = fs.readFileSync(path.resolve(__dirname, '../.template.env'), 'utf-8');
  11. const configs = {
  12. PORT: serverConfig.PORT || 3000,
  13. DEFAULT_DOMAIN: serverConfig.DEFAULT_DOMAIN || 'localhost:3000',
  14. DB_URI: serverConfig.DB_URI || 'bolt://localhost',
  15. DB_USERNAME: serverConfig.DB_USERNAME,
  16. DB_PASSWORD: serverConfig.DB_PASSWORD,
  17. REDIS_DISABLED: serverConfig.REDIS_DISABLED || false,
  18. REDIS_HOST: serverConfig.REDIS_HOST || '127.0.0.1',
  19. REDIS_PORT: serverConfig.REDIS_PORT || 6379,
  20. REDIS_PASSWORD: serverConfig.REDIS_PASSWORD,
  21. USER_LIMIT_PER_DAY: serverConfig.USER_LIMIT_PER_DAY || 50,
  22. JWT_SECRET: serverConfig.JWT_SECRET || 'securekey',
  23. ADMIN_EMAILS: serverConfig.ADMIN_EMAILS.join(','),
  24. RECAPTCHA_SITE_KEY: clientConfig.RECAPTCHA_SITE_KEY,
  25. RECAPTCHA_SECRET_KEY: serverConfig.RECAPTCHA_SECRET_KEY,
  26. GOOGLE_SAFE_BROWSING_KEY: serverConfig.GOOGLE_SAFE_BROWSING_KEY,
  27. GOOGLE_ANALYTICS: serverConfig.GOOGLE_ANALYTICS || clientConfig.GOOGLE_ANALYTICS,
  28. MAIL_HOST: serverConfig.MAIL_HOST,
  29. MAIL_PORT: serverConfig.MAIL_PORT,
  30. MAIL_SECURE: serverConfig.MAIL_SECURE,
  31. MAIL_USER: serverConfig.MAIL_USER,
  32. MAIL_FROM: serverConfig.MAIL_FROM,
  33. MAIL_PASSWORD: serverConfig.MAIL_PASSWORD,
  34. REPORT_MAIL: serverConfig.REPORT_MAIL,
  35. CONTACT_EMAIL: clientConfig.CONTACT_EMAIL,
  36. };
  37. Object.keys(configs).forEach(c => {
  38. envTemplate = envTemplate.replace(new RegExp(`{{${c}}}`, 'gm'), configs[c] || '');
  39. });
  40. fs.writeFileSync(path.resolve(__dirname, '../.env'), envTemplate);
  41. fs.renameSync(path.resolve(__dirname, 'config.js'), path.resolve(__dirname, 'old.config.js'));
  42. fs.renameSync(
  43. path.resolve(__dirname, '../client/config.js'),
  44. path.resolve(__dirname, '../client/old.config.js')
  45. );
  46. }