From fd8618acc14f46938d0c2397709f444ff869a011 Mon Sep 17 00:00:00 2001 From: naicoi Date: Fri, 21 Apr 2023 02:06:10 +0700 Subject: [PATCH] Auto stash before revert of "gitflow-feature-stash: init-template" --- .gitignore | 4 ++++ package.json | 24 ++++++++++++++++++++++++ pm2.development.json | 15 +++++++++++++++ pm2.production.json | 14 ++++++++++++++ src/index.ts | 3 +++ tsconfig.json | 5 +++++ webpack.config.js | 39 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 104 insertions(+) create mode 100644 .gitignore create mode 100644 package.json create mode 100644 pm2.development.json create mode 100644 pm2.production.json create mode 100644 src/index.ts create mode 100644 tsconfig.json create mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..87bc85b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules +.env +dist +yarn.lock diff --git a/package.json b/package.json new file mode 100644 index 0000000..293d6f2 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "nodejs-typescript-webpack", + "version": "0.1.0", + "main": "index.js", + "repository": "git@ssh.techio.dev:template/nodejs-typescript-webpack.git", + "author": "naicoi ", + "license": "MIT", + "scripts": { + "dev": "pm2-runtime pm2.development.json", + "build": "webpack" + }, + "devDependencies": { + "@tsconfig/node18": "1.0.1", + "@types/node": "18.15.3", + "copy-webpack-plugin": "11.0.0", + "pm2": "5.3.0", + "ts-loader": "9.4.2", + "ts-node": "10.9.1", + "typescript": "4.9.5", + "webpack": "5.75.0", + "webpack-cli": "5.0.1", + "webpack-node-externals": "3.0.0" + } +} diff --git a/pm2.development.json b/pm2.development.json new file mode 100644 index 0000000..1c30432 --- /dev/null +++ b/pm2.development.json @@ -0,0 +1,15 @@ +{ + "apps": [ + { + "name": "development", + "script": "./src/index.ts", + "watch": ["src"], + "exec_mode": "fork", + "watch_delay": 1000, + "ignore_watch": ["node_modules", "prisma"], + "env": { + "NODE_ENV": "development" + } + } + ] +} diff --git a/pm2.production.json b/pm2.production.json new file mode 100644 index 0000000..31ff3c9 --- /dev/null +++ b/pm2.production.json @@ -0,0 +1,14 @@ +{ + "apps": [ + { + "name": "nodejs-typescript-webpack", + "script": "main.js", + "instances": "max", + "exec_mode": "cluster", + "max_memory_restart": "1G", + "env": { + "NODE_ENV": "production" + } + } + ] +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..99acd63 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,3 @@ +process.on("SIGINT", function () { + console.log(`SIGINT`); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6dfa8ec --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "@tsconfig/node18/tsconfig.json", + "include": ["./src/**/*.ts"], + "exclude": ["./node_modules"] +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..f49022a --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,39 @@ +const nodeExternals = require("webpack-node-externals"); +const path = require("path"); +const CopyPlugin = require("copy-webpack-plugin"); + +const config = { + entry: "./src/index.ts", + mode: "production", + target: "node", + module: { + rules: [{ test: /\.ts$/, use: ["ts-loader"], exclude: /node_modules/ }], + }, + resolve: { + extensions: [".ts"], + }, + externalsPresets: { node: true }, + externals: [nodeExternals()], + output: { + clean: true, + filename: "main.js", + path: path.resolve(__dirname, "dist"), + }, + plugins: [ + new CopyPlugin({ + patterns: [ + { + from: path.resolve(__dirname, "production.json"), + }, + { + from: path.resolve(__dirname, "package.json"), + }, + { + from: path.resolve(__dirname, "yarn.lock"), + }, + ], + }), + ], +}; + +module.exports = config;