You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
2.0 KiB

12 months ago
  1. "use strict";
  2. const path = require("path");
  3. const fs = require("fs");
  4. /**
  5. * App 개발환경 정의
  6. * ------------------------------------------------------------------------------------
  7. * 정의되지 않은 경우 자동으로 false 처리
  8. * 어플리케이션을 실행할때 입력한 추가 argument를 통해 dev와 prod 상태를 구분합니다.
  9. * package.json 에서 서버 구동 npm script를 작성할때 뒤에 붙인 --dev 옵션입니다.
  10. */
  11. global.isDev = ( process.argv.length > 2 && process.argv[2] === '--dev' )
  12. /**
  13. * App Document Root 지정
  14. * ------------------------------------------------------------------------------------
  15. * back-end 루트를 절대경로 구해와서 root 라는 글로벌 변수에 할당합니다.
  16. * 우리가 주로 로드해서 사용할 모듈폴더 (modules) 역시 글로벌 변수에 할당합니다.
  17. */
  18. global.root = path.resolve(__dirname + '/../../app');
  19. global.modulePath = root + '/modules'
  20. /**
  21. * 사용 환경에 따른 APP 개발 환경설정 불러오기
  22. * ------------------------------------------------------------------------------------
  23. * 위의 개발환경에 따라 config폴더에서 각각 다른 파일을 불러오도록 합니다.
  24. * config.development.js , config.production.js 파일 두파일로 분리됩니다.
  25. */
  26. global.appConfig = require(path.resolve(root + '/config/config.' + (isDev?'development':'production') + '.js'));
  27. /**
  28. * 모듈 불러오기
  29. * @param moduleName 모듈 이름
  30. * @param moduleType 모듈 타입
  31. * @returns {*}
  32. */
  33. global.loadModule = ( moduleName, moduleType = 'controller') => {
  34. const modulePath = `${root}/modules/${moduleName}/${moduleName}.${moduleType}.js`
  35. if (!fs.existsSync(modulePath)) {
  36. throw Error('로드하려는 모듈이 존재하지 않습니다')
  37. }
  38. const t =require(modulePath);
  39. return t;
  40. }
  41. /**
  42. * 데이타베이스 객체 불러오기
  43. * @returns {*}
  44. */
  45. global.database = () => {
  46. return require(`${root}/core/database.js`)
  47. }