From a8987604f3725c26ab87a184d968969ce9c94d2e Mon Sep 17 00:00:00 2001 From: HF Date: Sun, 5 Jan 2020 20:47:59 +0100 Subject: [PATCH] dynamically create package.json for deployment --- package-lock.json | 38 ++++++------------------------------- package.json | 2 +- tools/copy.js | 9 +-------- tools/example-ecosystem.yml | 14 ++++++++++++++ tools/webpack.config.js | 20 ++++++++++++++++++- 5 files changed, 41 insertions(+), 42 deletions(-) create mode 100644 tools/example-ecosystem.yml diff --git a/package-lock.json b/package-lock.json index cf4209c..ec2bbfa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4855,12 +4855,6 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, - "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", - "dev": true - }, "events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", @@ -5375,15 +5369,6 @@ "readable-stream": "^2.3.6" } }, - "follow-redirects": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", - "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", - "dev": true, - "requires": { - "debug": "^3.0.0" - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -6086,6 +6071,12 @@ "is-property": "^1.0.2" } }, + "generate-package-json-webpack-plugin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/generate-package-json-webpack-plugin/-/generate-package-json-webpack-plugin-1.0.1.tgz", + "integrity": "sha512-UYAnqJbxsoRhH9VqP0RbME2RHzG6SdCAoRqPpPeKcWHMmyWW0J1R0/tWjj3HmXvf+KcRy0QksIq2u8ir0YDV7Q==", + "dev": true + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -6495,17 +6486,6 @@ } } }, - "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, "http-proxy-agent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-3.0.0.tgz", @@ -9932,12 +9912,6 @@ "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=", "dev": true }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, "resolve": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.1.tgz", diff --git a/package.json b/package.json index 5d7055e..82b5fa6 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "eslint-plugin-jsx-a11y": "^6.2.3", "eslint-plugin-react": "^7.0.1", "flow-bin": "^0.115.0", - "http-proxy": "^1.16.2", + "generate-package-json-webpack-plugin": "^1.0.1", "json-loader": "^0.5.4", "npm-check": "^5.9.0", "react-hot-loader": "^4.12.14", diff --git a/tools/copy.js b/tools/copy.js index c83d715..08f52dd 100644 --- a/tools/copy.js +++ b/tools/copy.js @@ -12,16 +12,9 @@ import pkg from '../package.json'; async function copy() { await makeDir('build'); await Promise.all([ - writeFile('build/package.json', JSON.stringify({ - private: true, - engines: pkg.engines, - dependencies: pkg.dependencies, - scripts: { - start: 'node --nouse-idle-notification --expose-gc web.js', - }, - }, null, 2)), copyFile('LICENSE', 'build/LICENSE'), copyDir('public', 'build/public'), + copyFile('tools/example-ecosystem.yml', 'build/ecosystem.example.yml'), ]); } diff --git a/tools/example-ecosystem.yml b/tools/example-ecosystem.yml new file mode 100644 index 0000000..3823925 --- /dev/null +++ b/tools/example-ecosystem.yml @@ -0,0 +1,14 @@ +apps: + - script : ./web.js + name : 'web' + node_args: --nouse-idle-notification --expose-gc + env: + HOSTURL: "http://localhost" + ASSET_SERVER: "http://localhost" + PORT: 80 + REDIS_URL: 'redis://localhost:6379' + MYSQL_HOST: "localhost" + MYSQL_USER: "pixelplanet" + MYSQL_DATABASE: "pixelplanet" + MYSQL_PW: "sqlpassword" + SESSION_SECRET: "ayyylmao" diff --git a/tools/webpack.config.js b/tools/webpack.config.js index 89beb83..4622c79 100644 --- a/tools/webpack.config.js +++ b/tools/webpack.config.js @@ -5,12 +5,27 @@ import path from 'path'; import webpack from 'webpack'; import AssetsPlugin from 'assets-webpack-plugin'; import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; +import GeneratePackageJsonPlugin from 'generate-package-json-webpack-plugin'; import pkg from '../package.json'; const isDebug = process.argv.includes('--debug'); const isVerbose = process.argv.includes('--verbose'); const isAnalyze = process.argv.includes('--analyze') || process.argv.includes('--analyse'); +const basePackageValues = { + name: pkg.name, + version: pkg.version, + private: true, + engines: pkg.engines, + scripts: { + start: 'node --nouse-idle-notification --expose-gc web.js', + }, + dependencies: { + "mysql2": "^2.1.0", + } +} +const versionsPackageFilename = path.resolve(__dirname, '../package.json'); + const config = { context: path.resolve(__dirname, '..'), @@ -288,7 +303,8 @@ const webConfig = { output: { ...config.output, - filename: '../../web.js', + path: path.resolve(__dirname, '../build'), + filename: './web.js', libraryTarget: 'commonjs2', }, @@ -331,6 +347,8 @@ const webConfig = { 'process.env.BROWSER': false, __DEV__: isDebug, }), + // create package.json for deployment + new GeneratePackageJsonPlugin(basePackageValues, versionsPackageFilename), ], node: {