app.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. const express = require("express");
  2. const session = require("cookie-session");
  3. const mongoose = require("mongoose");
  4. const compression = require("compression");
  5. const cssmerger = require("cssmerger");
  6. const esbuild = require("esbuild");
  7. const fileUpload = require("express-fileupload");
  8. const app = express();
  9. app.set("view engine", "ejs");
  10. let mongooseOptions = {
  11. useNewUrlParser: true,
  12. useUnifiedTopology: true,
  13. useFindAndModify: false,
  14. useCreateIndex: true,
  15. dbName: "subline"
  16. };
  17. let sessionOptions = {
  18. secret: process.env.SESSION_SECRET,
  19. sameSite: "lax",
  20. saveUninitialized: true,
  21. resave: false,
  22. };
  23. let cssOptions = {
  24. recursive: true,
  25. miminize: false
  26. };
  27. let esbuildOptions = {
  28. entryPoints: [`${__dirname}/views/dashboardPage/js/dashboard.js`],
  29. bundle: true,
  30. minify: false,
  31. outfile: `${__dirname}/views/dashboardPage/bundle.js`
  32. };
  33. app.set('views', `${__dirname}/views`);
  34. app.use(express.static(`${__dirname}/views`));
  35. if(process.env.NODE_ENV === "production"){
  36. sessionOptions.secure = true;
  37. cssOptions.minimize = true;
  38. mongooseOptions.auth = {authSource: "admin"};
  39. mongooseOptions.user = "subline";
  40. mongooseOptions.pass = process.env.SUBLINE_DB_PASS;
  41. esbuildOptions.minify = true;
  42. }
  43. mongoose.connect(`mongodb://127.0.0.1:27017/subline`, mongooseOptions);
  44. app.use(compression());
  45. app.use(express.urlencoded({extended: true}));
  46. app.use(fileUpload({
  47. limits: {fileSize: 1024 * 1024},
  48. useTempFiles: true
  49. }));
  50. app.use(express.json());
  51. app.use(session(sessionOptions));
  52. require("./routes")(app);
  53. esbuild.buildSync(esbuildOptions);
  54. cssmerger([
  55. `${__dirname}/views/shared/css/general.css`,
  56. `${__dirname}/views/shared/css/loader.css`,
  57. `${__dirname}/views/shared/css/banner.css`,
  58. `${__dirname}/views/dashboardPage/css`
  59. ], `${__dirname}/views/dashboardPage/bundle.css`, cssOptions);
  60. app.listen(5005);