From aa44c77e2e6ee41ef1943e5eac6d08f84d19a68e Mon Sep 17 00:00:00 2001 From: Maciek Kucmus Date: Fri, 9 Jul 2021 13:30:06 +0200 Subject: [PATCH] feat(cli): dot env support and template (#1580) --- docs/.vuepress/sidebar.js | 1 + docs/assets/env_cli.png | Bin 0 -> 17055 bytes docs/guide/FEATURELIST.md | 5 ++ docs/landing/getting-started/env-variables.md | 64 ++++++++++++++++++ packages/cli/bin/shopware-pwa | 2 +- packages/cli/package.json | 1 + packages/cli/src/commands/domains.ts | 4 ++ packages/cli/src/commands/plugins.ts | 4 ++ .../templates/project-template/.env.template | 7 ++ yarn.lock | 5 ++ 10 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 docs/assets/env_cli.png create mode 100644 docs/landing/getting-started/env-variables.md create mode 100644 packages/cli/src/templates/project-template/.env.template diff --git a/docs/.vuepress/sidebar.js b/docs/.vuepress/sidebar.js index dfe044377..1c02f0bcb 100644 --- a/docs/.vuepress/sidebar.js +++ b/docs/.vuepress/sidebar.js @@ -15,6 +15,7 @@ module.exports = { "/landing/getting-started/prepare-shopware", "/landing/project/contribution", "/landing/getting-started/local-environment", + "/landing/getting-started/env-variables", ], }, { diff --git a/docs/assets/env_cli.png b/docs/assets/env_cli.png new file mode 100644 index 0000000000000000000000000000000000000000..8513eee39ab725438d68608e1cda096f75609a82 GIT binary patch literal 17055 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 literal 0 HcmV?d00001 diff --git a/docs/guide/FEATURELIST.md b/docs/guide/FEATURELIST.md index 84084ba71..d23529138 100644 --- a/docs/guide/FEATURELIST.md +++ b/docs/guide/FEATURELIST.md @@ -118,3 +118,8 @@ sidebar: auto #### PayPal Checkout - Standard PayPal Checkout (requires Shopware PayPal plugin) + + +### Other + +- Project's .env support for environment variables \ No newline at end of file diff --git a/docs/landing/getting-started/env-variables.md b/docs/landing/getting-started/env-variables.md new file mode 100644 index 000000000..0247813ea --- /dev/null +++ b/docs/landing/getting-started/env-variables.md @@ -0,0 +1,64 @@ +# Environment variables + +This guide will help you to configure your shopware-pwa project using [environment variables](https://en.wikipedia.org/wiki/Environment_variable). + +## Usage + +Environment variables can be used within the application in many places, in the runtime as same as the build time. In nodejs-based application they can be accessed by using `process.env.[VARIABLE_CODE]`, `process.env.NODE_ENV` for instance. Nuxt and shopware-pwa itself uses some predefined variables to customize the application. + +The great example is a helper for getting images with optional image processor (treated like a proxy), the helper contains the piece of code: + +```js + if (!process.env.EXPERIMENTAL_IMAGE_PROCESSING_SERVER) return originalImageSrc + + ... + + let url = `${process.env.EXPERIMENTAL_IMAGE_PROCESSING_SERVER}?url=${mediaUrl}` + +``` + +Shopware-pwa provides the optional way of setting env variables by using `.env` file, instead of setting them up using system environment variables explicitly like: + +`EXPERIMENTAL_IMAGE_PROCESSING_SERVER=https://someserver.com/img/ shopware-pwa dev` or even before running the nodejs process, manually. + + +## Setup + +A generated project contains `.env.template` among other files placed in root directory. + +::: tip +Remember that the `.env` file is listed in `.gitignore` and shouldn't be versioned because it may contain some sensitive data. +::: + + +The `.env.template` file's content may look similar to this one: + +``` +HOST=0.0.0.0 +PORT=3000 +ADMIN_USER=admin +ADMIN_PASSWORD=shopware +ENABLE_DEVTOOLS=false +NODE_ENV=production +EXPERIMENTAL_IMAGE_PROCESSING_SERVER +``` + +**In order to activate the variables from the file, change the template's name to just `.env`** + +## Description + +The default environment variables + +- `HOST` - nuxt server host name (`0.0.0.0` by default) +- `PORT` - nuxt server port number (`3000` by default) +- `ADMIN_USER` - Shopware 6 admin user name (`admin` by default) +- `ADMIN_PASSWORD` - Shopware 6 admin password (`shopware` by default) +- `ENABLE_DEVTOOLS` - config turning on the nuxt dev tools (`true` by default) +- `NODE_ENV` - application mode: dev or production (`dev` by default) +- `EXPERIMENTAL_IMAGE_PROCESSING_SERVER` - URL to the custom image processor (well described [here](https://github.com/vuestorefront/shopware-pwa/blob/master/packages/default-theme/src/helpers/images/getResizedImage.js)) + +::: tip +shopware-pwa CLI tool can also detect the current state of environment variables and use given `ADMIN_USER` and `ADMIN_PASSWORD` values in `plugins` and `domains` commands (suggest credentials). + +![cli](./../../assets/env_cli.png) +::: \ No newline at end of file diff --git a/packages/cli/bin/shopware-pwa b/packages/cli/bin/shopware-pwa index ebfab042e..867d0f742 100755 --- a/packages/cli/bin/shopware-pwa +++ b/packages/cli/bin/shopware-pwa @@ -1,5 +1,5 @@ #!/usr/bin/env node - +require('dotenv').config() /* tslint:disable */ // check if we're running in dev mode diff --git a/packages/cli/package.json b/packages/cli/package.json index bf47de35e..b11faf12b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -31,6 +31,7 @@ "dependencies": { "@shopware-pwa/shopware-6-client": "0.9.1", "chokidar": "^3.5.2", + "dotenv": "^10.0.0", "gluegun": "^4.6.1", "md5-hex": "^4.0.0", "request": "^2.88.2", diff --git a/packages/cli/src/commands/domains.ts b/packages/cli/src/commands/domains.ts index e034bbcb4..e96e59012 100644 --- a/packages/cli/src/commands/domains.ts +++ b/packages/cli/src/commands/domains.ts @@ -30,12 +30,16 @@ Synchronize the domain's related config from backend (in order to build a domain type: "input", name: "username", message: "Shopware admin username:", + initial: process.env.ADMIN_USER, + footer: process.env.ADMIN_USER && "username is taken from .env", }; const shopwarePasswordQuestion = !inputParameters.password && { type: "password", name: "password", message: "Shopware admin password:", + initial: process.env.ADMIN_PASSWORD, + footer: process.env.ADMIN_PASSWORD && "password from .env is hidden", }; const shopwarePwaHostQuestions = !inputParameters.pwaHost && { diff --git a/packages/cli/src/commands/plugins.ts b/packages/cli/src/commands/plugins.ts index 612bed3a9..cb2fcb4f5 100644 --- a/packages/cli/src/commands/plugins.ts +++ b/packages/cli/src/commands/plugins.ts @@ -20,11 +20,15 @@ module.exports = { type: "input", name: "username", message: "Shopware admin username:", + initial: process.env.ADMIN_USER, + footer: process.env.ADMIN_USER && "username is taken from .env", }; const shopwarePasswordQuestion = !inputParameters.password && { type: "password", name: "password", message: "Shopware admin password:", + initial: process.env.ADMIN_PASSWORD, + footer: process.env.ADMIN_PASSWORD && "password from .env is hidden", }; const devModeQuestion = !inputParameters.devMode && { diff --git a/packages/cli/src/templates/project-template/.env.template b/packages/cli/src/templates/project-template/.env.template new file mode 100644 index 000000000..6e6c2ab10 --- /dev/null +++ b/packages/cli/src/templates/project-template/.env.template @@ -0,0 +1,7 @@ +HOST=0.0.0.0 +PORT=3000 +ADMIN_USER=admin +ADMIN_PASSWORD=shopware +ENABLE_DEVTOOLS=true +NODE_ENV=dev +EXPERIMENTAL_IMAGE_PROCESSING_SERVER \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 4e8e2ee21..cb66d93c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6520,6 +6520,11 @@ dot-prop@^6.0.1: dependencies: is-obj "^2.0.0" +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + duplexer2@~0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"