Skip to content

Commit 8ec5813

Browse files
committed
Change webpack config
1 parent 1bc12bd commit 8ec5813

File tree

3 files changed

+83
-41
lines changed

3 files changed

+83
-41
lines changed

packages/payment-backend/README.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ GRANT SELECT ON ALL TABLES IN SCHEMA payments TO samchon_r;
235235
### 2.3. Server
236236
NodeJS 및 PostgreSQL 의 설치가 끝났다면, 바로 `payment-backend` 구동을 시작할 수 있다.
237237

238-
제일 먼저 `git clone` 을 통하여, 결제 서버 프로젝트를 로컬 저장소에 복사하도록 한다. 그리고 해당 폴더로 이동하여 `npm install` 명령어를 실행함으로써, 통합 결제 서버를 구동하는 데 필요한 라이브러리들을 다운로드 한다. 그리고 `npm run build` 명령어를 입력하여, 결제 서버의 소스 코드를 컴파일한다. 마지막으로 `npm run start` 명령어를 실행해주면, 결제 서버가 구동된다.
238+
제일 먼저 `git clone` 을 통하여, 결제 서버 프로젝트를 로컬 저장소에 복사하도록 한다. 그리고 해당 폴더로 이동하여 `npm install` 명령어를 실행함으로써, 통합 결제 서버를 구동하는 데 필요한 라이브러리들을 다운로드 한다. 그리고 `npm run build` 명령어를 입력하여, 결제 서버의 소스 코드를 컴파일한다. 마지막으로 `npm run pm2:start` 명령어를 실행해주면, 결제 서버가 구동된다.
239239

240240
다만 `payment-backend` 를 구동하기 전, 각각 [PaymentConfiguration](https://github.com/samchon/payments/tree/master/src/PaymentConfiguration.ts)[PaymentGlobal](https://github.com/samchon/payments/tree/master/src/PaymentGlobal.ts) 클래스에 어떠한 속성들이 있는지 꼼꼼히 읽어보고, 귀하의 서비스에 알맞는 설정을 해 주도록 한다.
241241

@@ -250,8 +250,8 @@ npm run build
250250
npm run schema
251251

252252
# START SERVER & STOP SERVER
253-
npm run start
254-
npm run stop
253+
npm run pm2:start
254+
npm run pm2:stop
255255
```
256256

257257
[![npm version](https://badge.fury.io/js/@samchon/payment-backend.svg)](https://www.npmjs.com/package/@samchon/payment-backend)
@@ -606,40 +606,40 @@ export async function test_fake_iamport_payment_webhook
606606
- Build the new soure code
607607
- Restart the backend server without distruption
608608

609-
이러한 무중단 업데이트를 달성하기 위해서는, 서버 인스턴스는 메인 백엔드 서버 프로그램을 시작하기 전, 업데이트 프로그램을 실행해 줄 필요가 있다. 만일 귀하의 서버 인스턴스가 ELB (Elastic Loader Balancer) 등을 통하여 여러 대로 구성되어있고, 현재의 인스턴스가 슬레이브라면, `npm run start:updator:slave` 명령어를 실행해주면 된다.
609+
이러한 무중단 업데이트를 달성하기 위해서는, 서버 인스턴스는 메인 백엔드 서버 프로그램을 시작하기 전, 업데이트 프로그램을 실행해 줄 필요가 있다. 만일 귀하의 서버 인스턴스가 ELB (Elastic Loader Balancer) 등을 통하여 여러 대로 구성되어있고, 현재의 인스턴스가 슬레이브라면, `npm run pm2:start:updator:slave` 명령어를 실행해주면 된다.
610610

611-
반면 현재가 마스터 인스턴스라면, `npm run start:updator:master` 명령어를 실행하도록 한다.
611+
반면 현재가 마스터 인스턴스라면, `npm run pm2:start:updator:master` 명령어를 실행하도록 한다.
612612

613613
```bash
614614
#----
615615
# RUN UPDATOR PROGRAM
616616
#----
617617
# THE INSTANCE IS MASTER
618-
npm run start:updator:master
618+
npm run pm2:start:updator:master
619619

620620
# THE INSTANCE IS SLAVE
621-
npm run start:updator:slave
621+
npm run pm2:start:updator:slave
622622

623623
#----
624624
# MOUNT THE BACKEND SERVER UP
625625
#----
626-
npm run start real
626+
npm run pm2:start real
627627
```
628628

629629
### 4.2. Local Server
630-
간혹 로컬에, [테스트 자동화 프로그램](#33-test-automation-program)이 아닌, `@samchon/payment-backend` 그 자체를 구동해야 할 때가 있다. 이럴 때는 아래와 같이 `npm run start local` 명령어를 입력해주면, 로컬에 `@samchon/payment-backend` 서버를 개설할 수 있다. 그리고 실행된 서버를 종료하려거든, `npm run stop` 명령어를 입력해주면 된다.
630+
간혹 로컬에, [테스트 자동화 프로그램](#33-test-automation-program)이 아닌, `@samchon/payment-backend` 그 자체를 구동해야 할 때가 있다. 이럴 때는 아래와 같이 `npm run pm2:start local` 명령어를 입력해주면, 로컬에 `@samchon/payment-backend` 서버를 개설할 수 있다. 그리고 실행된 서버를 종료하려거든, `npm run pm2:stop` 명령어를 입력해주면 된다.
631631

632632
```bash
633-
npm run start local
634-
npm run stop
633+
npm run pm2:start local
634+
npm run pm2:stop
635635
```
636636

637-
또한, 로컬 개발 환경에서의 무중단 업데이트가 얼마나 의미가 있겠냐만은, 어쨋든 `@samchon/payment-backend` 는 로컬 환경에서도 무중단 업데이트라는 것을 할 수 있다. 아래와 같이 로컬 서버를 구동하기 전 `npm run start updator:master` 명령어를 통하여 업데이트 관리자 프로그램을 구동하고, 향후 무중단 업데이트가 필요할 때마다 `npm run update local` 명령어를 입력해주면 된다.
637+
또한, 로컬 개발 환경에서의 무중단 업데이트가 얼마나 의미가 있겠냐만은, 어쨋든 `@samchon/payment-backend` 는 로컬 환경에서도 무중단 업데이트라는 것을 할 수 있다. 아래와 같이 로컬 서버를 구동하기 전 `npm run pm2:start updator:master` 명령어를 통하여 업데이트 관리자 프로그램을 구동하고, 향후 무중단 업데이트가 필요할 때마다 `npm run update local` 명령어를 입력해주면 된다.
638638

639639
```bash
640640
# START THE LOCAL BACKEND SERVER WITH UPDATOR PROGRAM
641-
npm run start updator:master
642-
npm run start local
641+
npm run pm2:start updator:master
642+
npm run pm2:start local
643643

644644
# UPDATE THE LOCAL SERVER WITHOUT DISTRUPTION
645645
npm run update local
@@ -667,8 +667,8 @@ npm install
667667
npm run build
668668
pm2 stop all
669669
npm run test -- --mode=dev
670-
npm run start:updator:master
671-
npm run start dev
670+
npm run pm2:start:updator:master
671+
npm run pm2:start dev
672672
```
673673

674674
더하여 `@samchon/payment-backend` 를 개발하다보면, 문득 현재 가동 중인 `@samchon/payment-backend` 서버의 정보가 이리저리 궁금해질 수 있다. 가령 현재 가동 중인 dev 서버가 사용 중인 소스 코드가 무엇인지 알고 싶어, 해당 서버가 사용 중인 소스 코드의 commit 에 대한 hash code 를 알고싶을 수도 있는 법이다.

packages/payment-backend/package.json

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
"main": "lib/index.js",
66
"typings": "lib/index.d.ts",
77
"scripts": {
8+
"test": "node bin/test",
9+
"test:update": "node bin/test/manual/update",
10+
"------------------------BUILDS------------------------": "",
811
"build": "npm run build:sdk && npm run build:main && npm run build:test",
912
"build:api": "rimraf packages/api/lib && nestia sdk && tsc -p packages/api/tsconfig.json",
1013
"build:main": "rimraf lib && tsc",
@@ -16,28 +19,28 @@
1619
"eslint": "eslint src && eslint test",
1720
"eslint:fix": "eslint src --fix && eslint test --fix",
1821
"prepare": "ts-patch install && npm run build:prisma",
19-
"-----------------------------------------------": "",
20-
"reset-for-debugging": "npm run test -- --reset true --include __nothing__",
21-
"test": "node bin/test",
22-
"test:update": "node bin/test/manual/update",
23-
"generate:password": "npx ts-node src/test/manual/password",
24-
"generate:uuid": "ts-node test/manual/uuid",
25-
"reset:dev": "git pull && npm install && npm run build && npm run stop && npm run test -- --mode dev && npm run start:updator:master && npm run start dev",
26-
"schema": "node lib/executable/schema",
27-
"------------------------------------------------": "",
22+
"------------------------WEBPACK------------------------": "",
23+
"webpack": "rimraf dist && npm run build:prisma && webpack",
24+
"webpack:start": "cd dist && node server",
25+
"webpack:start:testing": "cd dist && node server testing",
26+
"webpack:start:updator:master": "cd dist && node updator-master",
27+
"webpack:start:updator:slave": "cd dist && node updator-slave",
28+
"------------------------DEPLOYS------------------------": "",
2829
"revert": "node lib/executable/revert",
29-
"start": "pm2 start lib/executable/server.js -i 0 --name payments-server-backend-server --wait-ready --listen-timeout 120000 --kill-timeout 15000 --",
30-
"start:local": "pm2 start lib/executable/server.js -i 2 --name payments-server-backend-server --wait-ready --listen-timeout 120000 --kill-timeout 15000 -- local",
31-
"start:updator:master": "pm2 start --name payments-server-backend-updator-master lib/executable/updator-master.js",
32-
"start:updator:slave": "pm2 start --name payments-server-backend-updator-slave lib/executable/updator-slave.js",
33-
"start:reload": "pm2 reload payments-server-backend-server",
34-
"stop": "pm2 delete payments-server-backend-server",
35-
"stop:updator:master": "pm2 delete payments-server-backend-updator-master",
36-
"stop:updator:slave": "pm2 delete payments-server-backend-updator-slave",
30+
"schema": "node lib/executable/schema",
31+
"start": "node lib/executable/server",
32+
"start:testing": "node lib/executable/server local",
33+
"start:updator:master": "node lib/executable/updator-master",
34+
"start:updator:slave": "node lib/executable/updator-slave",
3735
"update": "node lib/executable/update",
38-
"-------------------------------------------------": "",
39-
"webpack": "webpack",
40-
"prune": "npm ci --omit=dev --ignore-scripts && npm run build:prisma"
36+
"--------------------------PM2--------------------------": "",
37+
"pm2:start": "pm2 start lib/executable/server.js -i 0 --name payments-server-backend-server --wait-ready --listen-timeout 120000 --kill-timeout 15000 --",
38+
"pm2:start:updator:master": "pm2 start --name payments-server-backend-updator-master lib/executable/updator-master.js",
39+
"pm2:start:updator:slave": "pm2 start --name payments-server-backend-updator-slave lib/executable/updator-slave.js",
40+
"pm2:start:reload": "pm2 reload payments-server-backend-server",
41+
"pm2:stop": "pm2 delete payments-server-backend-server",
42+
"pm2:stop:updator:master": "pm2 delete payments-server-backend-updator-master",
43+
"pm2:stop:updator:slave": "pm2 delete payments-server-backend-updator-slave"
4144
},
4245
"repository": {
4346
"type": "git",
@@ -63,6 +66,7 @@
6366
"@typescript-eslint/eslint-plugin": "^5.26.0",
6467
"@typescript-eslint/parser": "^5.26.0",
6568
"cli": "^1.0.1",
69+
"copy-webpack-plugin": "^11.0.0",
6670
"copyfiles": "^2.4.1",
6771
"iamport-server-api": "^5.1.2",
6872
"nestia": "^5.0.3",
@@ -77,7 +81,7 @@
7781
"typescript-transform-paths": "^3.4.6",
7882
"webpack": "^5.89.0",
7983
"webpack-cli": "^5.1.4",
80-
"webpack-node-externals": "^3.0.0"
84+
"write-file-webpack-plugin": "^4.5.1"
8185
},
8286
"dependencies": {
8387
"@nestia/core": "^2.3.9",
@@ -107,4 +111,4 @@
107111
"LICENSE",
108112
"README.md"
109113
]
110-
}
114+
}

packages/payment-backend/webpack.config.js

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
11
const path = require("path");
2-
const nodeExternals = require("webpack-node-externals");
32

3+
const CopyWebpackPlugin = require("copy-webpack-plugin");
4+
const WriteFilePlugin = require("write-file-webpack-plugin");
5+
const { IgnorePlugin } = require("webpack");
6+
7+
const lazyImports = [
8+
"@fastify/static",
9+
"@fastify/view",
10+
"@nestjs/microservices",
11+
"@nestjs/websockets",
12+
"class-transformer",
13+
"class-validator",
14+
];
15+
16+
// @reference https://tech-blog.s-yoshiki.com/entry/297
417
module.exports = {
518
// CUSTOMIZE HERE
619
entry: {
720
server: "./src/executable/server.ts",
8-
"updator-master": "./src/executable/updator-master.ts",
921
},
1022
output: {
1123
path: path.join(__dirname, "dist"),
@@ -16,7 +28,6 @@ module.exports = {
1628
},
1729

1830
// JUST KEEP THEM
19-
externals: [nodeExternals()],
2031
mode: "production",
2132
target: "node",
2233
module: {
@@ -31,4 +42,31 @@ module.exports = {
3142
resolve: {
3243
extensions: [".tsx", ".ts", ".js"],
3344
},
45+
plugins: [
46+
new CopyWebpackPlugin({
47+
patterns: [
48+
{
49+
from: ".env",
50+
to: "[name][ext]",
51+
},
52+
{
53+
from: "./node_modules/.prisma/client/*.node",
54+
to: () => Promise.resolve("[path][name][ext]"),
55+
},
56+
],
57+
}),
58+
new WriteFilePlugin(),
59+
new IgnorePlugin({
60+
checkResource: (resource) => {
61+
if (lazyImports.some((modulo) => resource.startsWith(modulo))) {
62+
try {
63+
require.resolve(resource);
64+
} catch (err) {
65+
return true;
66+
}
67+
}
68+
return false;
69+
},
70+
}),
71+
],
3472
};

0 commit comments

Comments
 (0)