From 4186bbed5d69fc018eaa94a1dceabdd3dca750f8 Mon Sep 17 00:00:00 2001 From: Edward Horsford Date: Fri, 28 Apr 2017 10:57:41 +0100 Subject: [PATCH] Add support for .env for storing private data Create .env file from template if it doesn't exist Import items from .env using dotenv - good for storing private data --- .gitignore | 1 + lib/template.env | 20 ++++++++++++++++++++ package.json | 1 + server.js | 1 + start.js | 12 +++++++++++- 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 lib/template.env diff --git a/.gitignore b/.gitignore index 5017912d61..8ae8b59730 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.env .sass-cache .DS_Store .start.pid diff --git a/lib/template.env b/lib/template.env new file mode 100644 index 0000000000..473aba53a4 --- /dev/null +++ b/lib/template.env @@ -0,0 +1,20 @@ +# ========================================= +# WARNING: Don't commit this file to git +# ========================================= +# +# Use this file for storing private data - things like API keys and admin credentials +# +# Storing data: +# +# EXAMPLE_API_KEY=123456789 +# JSON={"foo": "bar"} +# +# More examples here: https://www.npmjs.com/package/dotenv +# +# Use the data in your app: +# +# var key = process.env.EXAMPLE_API_KEY + +# ========================================= +# INSERT YOUR DATA HERE: + diff --git a/package.json b/package.json index b80aa96a44..60936422ce 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "body-parser": "^1.14.1", "browser-sync": "^2.11.1", "cross-spawn": "^5.0.0", + "dotenv": "^4.0.0", "express": "4.13.3", "express-session": "^1.13.0", "express-writer": "0.0.4", diff --git a/server.js b/server.js index 3ab53b1348..b2c6b6d292 100644 --- a/server.js +++ b/server.js @@ -1,3 +1,4 @@ +require('dotenv').config() var crypto = require('crypto') var path = require('path') var express = require('express') diff --git a/start.js b/start.js index a43c89632b..097fa04e42 100644 --- a/start.js +++ b/start.js @@ -3,11 +3,21 @@ var path = require('path') var fs = require('fs') -if (!fs.existsSync(path.join(__dirname, '/node_modules'))) { +// Check if node_modules folder exists +const nodeModulesExists = fs.existsSync(path.join(__dirname, '/node_modules')) +if (!nodeModulesExists) { console.error('ERROR: Node module folder missing. Try running `npm install`') process.exit(0) } +// Create template .env file if it doesn't exist +const envExists = fs.existsSync(path.join(__dirname, '/.env')) +if (!envExists) { + console.log('Creating template .env file') + fs.createReadStream(path.join(__dirname, '/lib/template.env')) + .pipe(fs.createWriteStream(path.join(__dirname, '/.env'))) +} + // run gulp var spawn = require('cross-spawn')