Allowing env.yaml file for environment configs
							parent
							
								
									ad0b4c0604
								
							
						
					
					
						commit
						7a3f61dbb3
					
				|  | @ -4,5 +4,5 @@ public/uploads | |||
| /config/*-local.json | ||||
| .vscode | ||||
| **.DS_Store | ||||
| .env | ||||
| env.yaml | ||||
| ecosystem.config.js | ||||
							
								
								
									
										15
									
								
								README.md
								
								
								
								
							
							
						
						
									
										15
									
								
								README.md
								
								
								
								
							|  | @ -166,6 +166,21 @@ If you'd rather store settings in a file which isn't checked into version contro | |||
| 
 | ||||
| This can also be used for payment modules too. Any settings in the `/config/<gateway>-local.json` file will override the `/config/<gateway>.json` file. | ||||
| 
 | ||||
| ##### Environment configuration | ||||
| 
 | ||||
| An alternative to local configuration is using an `env.yaml` file (in the root of app) to override settings. You may want to do something like: | ||||
| 
 | ||||
| ``` yaml | ||||
| development: | ||||
|   port: 1111 | ||||
|   databaseConnectionString: mongodb://127.0.0.1:27017/expresscart | ||||
| production: | ||||
|   port: 2222 | ||||
|   databaseConnectionString: mongodb://prod_db_url:27017/expresscart | ||||
| ``` | ||||
| 
 | ||||
| The app will read in the `NODE_ENV` and switch and override any valid settings. Eg: `databaseConnectionString` set in the `env.yaml` file will override anything in `settings.json` file (including local). | ||||
| 
 | ||||
| ##### Cart name and Cart description | ||||
| 
 | ||||
| These values are used for search engine optimization (SEO) purposes. They will be used as the title and description when your website is listed in Google and other search engines. | ||||
|  |  | |||
							
								
								
									
										11
									
								
								app.js
								
								
								
								
							
							
						
						
									
										11
									
								
								app.js
								
								
								
								
							|  | @ -1,6 +1,11 @@ | |||
| require('dotenv').config(); | ||||
| const express = require('express'); | ||||
| // require('dotenv').config();
 | ||||
| const fs = require('fs'); | ||||
| const yenv = require('yenv'); | ||||
| if(fs.existsSync('./env.yaml')){ | ||||
|     process.env = yenv('env.yaml', { strict: false }); | ||||
| } | ||||
| const path = require('path'); | ||||
| const express = require('express'); | ||||
| const logger = require('morgan'); | ||||
| const cookieParser = require('cookie-parser'); | ||||
| const bodyParser = require('body-parser'); | ||||
|  | @ -279,7 +284,7 @@ if(!config.secretSession || config.secretSession === ''){ | |||
| 
 | ||||
| app.enable('trust proxy'); | ||||
| app.use(helmet()); | ||||
| app.set('port', process.env.PORT || 1111); | ||||
| app.set('port', process.env.port || 1111); | ||||
| app.use(logger('dev')); | ||||
| app.use(bodyParser.urlencoded({ extended: false })); | ||||
| app.use(cookieParser(config.secretCookie)); | ||||
|  |  | |||
|  | @ -227,8 +227,12 @@ const getConfig = () => { | |||
| 
 | ||||
|     config.themeViews = '../views/themes/' + config.theme + '/'; | ||||
| 
 | ||||
|     // if db set to mongodb override connection with MONGODB_CONNECTION_STRING env var
 | ||||
|     config.databaseConnectionString = process.env.MONGODB_CONNECTION_STRING || config.databaseConnectionString; | ||||
|     // Override from env.yaml environment file
 | ||||
|     Object.keys(config).forEach((configKey) => { | ||||
|         if(process.env[configKey]){ | ||||
|             config[configKey] = process.env[configKey]; | ||||
|         } | ||||
|     }); | ||||
| 
 | ||||
|     return config; | ||||
| }; | ||||
|  | @ -249,7 +253,7 @@ const getPaymentConfig = () => { | |||
|         config = Object.assign(config, localConfigObj); | ||||
|     } | ||||
| 
 | ||||
|     // Override from .env file
 | ||||
|     // Override from env.yaml environment file
 | ||||
|     Object.keys(config).forEach((configKey) => { | ||||
|         if(process.env[configKey]){ | ||||
|             config[configKey] = process.env[configKey]; | ||||
|  |  | |||
|  | @ -721,7 +721,6 @@ | |||
|       "version": "1.0.10", | ||||
|       "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", | ||||
|       "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "sprintf-js": "~1.0.2" | ||||
|       } | ||||
|  | @ -2020,6 +2019,11 @@ | |||
|       "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "coercer": { | ||||
|       "version": "1.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/coercer/-/coercer-1.1.2.tgz", | ||||
|       "integrity": "sha1-6upEWVEfc/nzat4EqYEHznWCS3A=" | ||||
|     }, | ||||
|     "collection-map": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", | ||||
|  | @ -2395,8 +2399,7 @@ | |||
|     "decamelize": { | ||||
|       "version": "1.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", | ||||
|       "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" | ||||
|     }, | ||||
|     "decamelize-keys": { | ||||
|       "version": "1.1.0", | ||||
|  | @ -2448,8 +2451,7 @@ | |||
|     "deep-extend": { | ||||
|       "version": "0.6.0", | ||||
|       "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", | ||||
|       "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", | ||||
|       "dev": true | ||||
|       "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" | ||||
|     }, | ||||
|     "deep-is": { | ||||
|       "version": "0.1.3", | ||||
|  | @ -3394,8 +3396,7 @@ | |||
|     "esprima": { | ||||
|       "version": "4.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", | ||||
|       "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", | ||||
|       "dev": true | ||||
|       "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" | ||||
|     }, | ||||
|     "espurify": { | ||||
|       "version": "1.8.1", | ||||
|  | @ -5846,7 +5847,6 @@ | |||
|       "version": "3.13.1", | ||||
|       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", | ||||
|       "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "argparse": "^1.0.7", | ||||
|         "esprima": "^4.0.0" | ||||
|  | @ -5904,6 +5904,11 @@ | |||
|       "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "keyblade": { | ||||
|       "version": "0.3.2", | ||||
|       "resolved": "https://registry.npmjs.org/keyblade/-/keyblade-0.3.2.tgz", | ||||
|       "integrity": "sha1-HmV/R3RlloB9a1kcU0dr6poawtQ=" | ||||
|     }, | ||||
|     "keyv": { | ||||
|       "version": "3.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", | ||||
|  | @ -7114,7 +7119,6 @@ | |||
|       "version": "2.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", | ||||
|       "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "p-try": "^2.0.0" | ||||
|       } | ||||
|  | @ -7137,8 +7141,7 @@ | |||
|     "p-try": { | ||||
|       "version": "2.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", | ||||
|       "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", | ||||
|       "dev": true | ||||
|       "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" | ||||
|     }, | ||||
|     "package-hash": { | ||||
|       "version": "4.0.0", | ||||
|  | @ -8035,8 +8038,7 @@ | |||
|     "require-directory": { | ||||
|       "version": "2.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", | ||||
|       "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" | ||||
|     }, | ||||
|     "require-main-filename": { | ||||
|       "version": "1.0.1", | ||||
|  | @ -8367,8 +8369,7 @@ | |||
|     "set-blocking": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", | ||||
|       "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" | ||||
|     }, | ||||
|     "set-value": { | ||||
|       "version": "2.0.1", | ||||
|  | @ -8652,8 +8653,7 @@ | |||
|     "sprintf-js": { | ||||
|       "version": "1.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", | ||||
|       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" | ||||
|     }, | ||||
|     "srcset": { | ||||
|       "version": "1.0.0", | ||||
|  | @ -9830,6 +9830,163 @@ | |||
|       "requires": { | ||||
|         "camelcase": "^3.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "yenv": { | ||||
|       "version": "2.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/yenv/-/yenv-2.1.1.tgz", | ||||
|       "integrity": "sha512-fbjRZjpP9fi1Kdj8ehSXNf703qYCoeb80QoEwnPDjogy5abE1raxXJfr+wJLn6mFRcvp1pfyHfYg0N40y8MBCA==", | ||||
|       "requires": { | ||||
|         "coercer": "^1.1.2", | ||||
|         "deep-extend": "^0.6.0", | ||||
|         "js-yaml": "^3.13.1", | ||||
|         "keyblade": "^0.3.2", | ||||
|         "yargs": "^14.2.0" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "ansi-regex": { | ||||
|           "version": "4.1.0", | ||||
|           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", | ||||
|           "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" | ||||
|         }, | ||||
|         "ansi-styles": { | ||||
|           "version": "3.2.1", | ||||
|           "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", | ||||
|           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", | ||||
|           "requires": { | ||||
|             "color-convert": "^1.9.0" | ||||
|           } | ||||
|         }, | ||||
|         "camelcase": { | ||||
|           "version": "5.3.1", | ||||
|           "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", | ||||
|           "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" | ||||
|         }, | ||||
|         "cliui": { | ||||
|           "version": "5.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", | ||||
|           "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", | ||||
|           "requires": { | ||||
|             "string-width": "^3.1.0", | ||||
|             "strip-ansi": "^5.2.0", | ||||
|             "wrap-ansi": "^5.1.0" | ||||
|           } | ||||
|         }, | ||||
|         "emoji-regex": { | ||||
|           "version": "7.0.3", | ||||
|           "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", | ||||
|           "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" | ||||
|         }, | ||||
|         "find-up": { | ||||
|           "version": "3.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", | ||||
|           "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", | ||||
|           "requires": { | ||||
|             "locate-path": "^3.0.0" | ||||
|           } | ||||
|         }, | ||||
|         "get-caller-file": { | ||||
|           "version": "2.0.5", | ||||
|           "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", | ||||
|           "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" | ||||
|         }, | ||||
|         "is-fullwidth-code-point": { | ||||
|           "version": "2.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", | ||||
|           "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" | ||||
|         }, | ||||
|         "locate-path": { | ||||
|           "version": "3.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", | ||||
|           "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", | ||||
|           "requires": { | ||||
|             "p-locate": "^3.0.0", | ||||
|             "path-exists": "^3.0.0" | ||||
|           } | ||||
|         }, | ||||
|         "p-locate": { | ||||
|           "version": "3.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", | ||||
|           "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", | ||||
|           "requires": { | ||||
|             "p-limit": "^2.0.0" | ||||
|           } | ||||
|         }, | ||||
|         "path-exists": { | ||||
|           "version": "3.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", | ||||
|           "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" | ||||
|         }, | ||||
|         "require-main-filename": { | ||||
|           "version": "2.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", | ||||
|           "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" | ||||
|         }, | ||||
|         "string-width": { | ||||
|           "version": "3.1.0", | ||||
|           "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", | ||||
|           "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", | ||||
|           "requires": { | ||||
|             "emoji-regex": "^7.0.1", | ||||
|             "is-fullwidth-code-point": "^2.0.0", | ||||
|             "strip-ansi": "^5.1.0" | ||||
|           } | ||||
|         }, | ||||
|         "strip-ansi": { | ||||
|           "version": "5.2.0", | ||||
|           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", | ||||
|           "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", | ||||
|           "requires": { | ||||
|             "ansi-regex": "^4.1.0" | ||||
|           } | ||||
|         }, | ||||
|         "which-module": { | ||||
|           "version": "2.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", | ||||
|           "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" | ||||
|         }, | ||||
|         "wrap-ansi": { | ||||
|           "version": "5.1.0", | ||||
|           "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", | ||||
|           "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", | ||||
|           "requires": { | ||||
|             "ansi-styles": "^3.2.0", | ||||
|             "string-width": "^3.0.0", | ||||
|             "strip-ansi": "^5.0.0" | ||||
|           } | ||||
|         }, | ||||
|         "y18n": { | ||||
|           "version": "4.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", | ||||
|           "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" | ||||
|         }, | ||||
|         "yargs": { | ||||
|           "version": "14.2.2", | ||||
|           "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.2.tgz", | ||||
|           "integrity": "sha512-/4ld+4VV5RnrynMhPZJ/ZpOCGSCeghMykZ3BhdFBDa9Wy/RH6uEGNWDJog+aUlq+9OM1CFTgtYRW5Is1Po9NOA==", | ||||
|           "requires": { | ||||
|             "cliui": "^5.0.0", | ||||
|             "decamelize": "^1.2.0", | ||||
|             "find-up": "^3.0.0", | ||||
|             "get-caller-file": "^2.0.1", | ||||
|             "require-directory": "^2.1.1", | ||||
|             "require-main-filename": "^2.0.0", | ||||
|             "set-blocking": "^2.0.0", | ||||
|             "string-width": "^3.0.0", | ||||
|             "which-module": "^2.0.0", | ||||
|             "y18n": "^4.0.0", | ||||
|             "yargs-parser": "^15.0.0" | ||||
|           } | ||||
|         }, | ||||
|         "yargs-parser": { | ||||
|           "version": "15.0.0", | ||||
|           "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz", | ||||
|           "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==", | ||||
|           "requires": { | ||||
|             "camelcase": "^5.0.0", | ||||
|             "decamelize": "^1.2.0" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  |  | |||
|  | @ -64,7 +64,8 @@ | |||
|     "sitemap": "^1.6.0", | ||||
|     "strip-bom": "^3.0.0", | ||||
|     "stripe": "^7.12.0", | ||||
|     "uglifycss": "0.0.27" | ||||
|     "uglifycss": "0.0.27", | ||||
|     "yenv": "^2.1.1" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "ava": "^2.4.0", | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue