configToEnv.ts 2.2 KB

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