瀏覽代碼

Merge pull request #44 from medusajs/feat/entry-file

feat: Add entry point file
Adrien de Peretti 2 年之前
父節點
當前提交
b0328836d4
共有 3 個文件被更改,包括 66 次插入15 次删除
  1. 50 0
      index.js
  2. 10 9
      package.json
  3. 6 6
      yarn.lock

+ 50 - 0
index.js

@@ -0,0 +1,50 @@
+const express = require("express")
+const { GracefulShutdownServer } = require("medusa-core-utils")
+
+const loaders = require("@medusajs/medusa/dist/loaders/index").default
+
+;(async() => {
+  async function start() {
+    const app = express()
+    const directory = process.cwd()
+
+    try {
+      const { container } = await loaders({
+        directory,
+        expressApp: app
+      })
+      const configModule = container.resolve("configModule")
+      const port = process.env.PORT ?? configModule.projectConfig.port ?? 9000
+
+      const server = GracefulShutdownServer.create(
+        app.listen(port, (err) => {
+          if (err) {
+            return
+          }
+          console.log(`Server is ready on port: ${port}`)
+        })
+      )
+
+      // Handle graceful shutdown
+      const gracefulShutDown = () => {
+        server
+          .shutdown()
+          .then(() => {
+            console.info("Gracefully stopping the server.")
+            process.exit(0)
+          })
+          .catch((e) => {
+            console.error("Error received when shutting down the server.", e)
+            process.exit(1)
+          })
+      }
+      process.on("SIGTERM", gracefulShutDown)
+      process.on("SIGINT", gracefulShutDown)
+    } catch (err) {
+      console.error("Error starting server", err)
+      process.exit(1)
+    }
+  }
+
+  await start()
+})()

+ 10 - 9
package.json

@@ -13,14 +13,15 @@
     "medusa"
   ],
   "scripts": {
-    "clean": "./node_modules/.bin/rimraf dist",
-    "build": "npm run clean && tsc -p tsconfig.json",
-    "watch": "tsc --watch",
-    "test": "jest",
-    "seed": "medusa seed -f ./data/seed.json",
-    "start": "npm run build && medusa start",
-    "dev": "npm run build && medusa develop",
-    "build:admin": "medusa-admin build"
+    "clean": "cross-env ./node_modules/.bin/rimraf dist",
+    "build": "cross-env npm run clean && tsc -p tsconfig.json",
+    "watch": "cross-env tsc --watch",
+    "test": "cross-env jest",
+    "seed": "cross-env medusa seed -f ./data/seed.json",
+    "start": "cross-env npm run build && medusa start",
+    "start:custom": "cross-env npm run build && node --preserve-symlinks index.js",
+    "dev": "cross-env npm run build && medusa develop",
+    "build:admin": "cross-env medusa-admin build"
   },
   "dependencies": {
     "@babel/preset-typescript": "^7.21.4",
@@ -47,7 +48,7 @@
     "@types/jest": "^27.4.0",
     "@types/node": "^17.0.8",
     "babel-preset-medusa-package": "^1.1.13",
-    "cross-env": "^5.2.1",
+    "cross-env": "^7.0.3",
     "eslint": "^6.8.0",
     "jest": "^27.3.1",
     "mongoose": "^5.13.14",

+ 6 - 6
yarn.lock

@@ -2880,12 +2880,12 @@ cron-parser@^4.2.0, cron-parser@^4.6.0:
   dependencies:
     luxon "^3.2.1"
 
-cross-env@^5.2.1:
-  version "5.2.1"
-  resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.1.tgz#b2c76c1ca7add66dc874d11798466094f551b34d"
-  integrity sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==
+cross-env@^7.0.3:
+  version "7.0.3"
+  resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
+  integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
   dependencies:
-    cross-spawn "^6.0.5"
+    cross-spawn "^7.0.1"
 
 cross-spawn@^6.0.5:
   version "6.0.5"
@@ -2898,7 +2898,7 @@ cross-spawn@^6.0.5:
     shebang-command "^1.2.0"
     which "^1.2.9"
 
-cross-spawn@^7.0.3:
+cross-spawn@^7.0.1, cross-spawn@^7.0.3:
   version "7.0.3"
   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
   integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==