From f95862068c3a0af6f56b9d121e27bc6d02fba0e9 Mon Sep 17 00:00:00 2001 From: Michael Johnston Date: Mon, 16 Oct 2017 18:36:02 -0700 Subject: [PATCH 1/4] allow configuration of server --- config/index.js | 15 ++++++++++++--- config/paths.js | 1 + package.json | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/config/index.js b/config/index.js index a170271..9ebe0ed 100644 --- a/config/index.js +++ b/config/index.js @@ -1,13 +1,22 @@ +const fs = require('fs') const paths = require('./paths') const YAML = require('yamljs') +const merge = require('merge') -module.exports = { +let config = { paths, domain: 'https://localhost', port: 8080, regex: { images: /\.(png|svg|jpg|gif)$/, static: /\.(liquid|json)$/ - }, - shopify: YAML.load(paths.userShopifyConfig) + } } + +if(fs.existsSync(paths.userServerConfig)) { + config = merge(true, config, YAML.load(paths.userServerConfig)) +} + +config.shopify = YAML.load(paths.userShopifyConfig) + +module.exports = config diff --git a/config/paths.js b/config/paths.js index 4629d09..a831087 100644 --- a/config/paths.js +++ b/config/paths.js @@ -49,5 +49,6 @@ module.exports = { }, assetsOutput: resolveApp('dist/assets'), userShopifyConfig: resolveApp('config/shopify.yml'), + userServerConfig: resolveApp('config/server.yml'), eslintrc: getEslintrc() } diff --git a/package.json b/package.json index cdc078a..440eb88 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "img-loader": "2.0.0", "jest": "20.0.3", "loader-utils": "1.1.0", + "merge": "^1.1.3", "minimist": "1.2.0", "node-sass": "4.5.3", "postcss-loader": "2.0.5", From 4365845cdf3f97afa6bc57292948bc8519754f79 Mon Sep 17 00:00:00 2001 From: Michael Johnston Date: Mon, 16 Oct 2017 20:38:11 -0700 Subject: [PATCH 2/4] allow configuring public domain without port --- config/index.js | 1 + config/webpack.dev.conf.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/config/index.js b/config/index.js index 9ebe0ed..4fc3029 100644 --- a/config/index.js +++ b/config/index.js @@ -15,6 +15,7 @@ let config = { if(fs.existsSync(paths.userServerConfig)) { config = merge(true, config, YAML.load(paths.userServerConfig)) + config.devDomain = config.devDomain || `${config.domain}:${config.port}` } config.shopify = YAML.load(paths.userShopifyConfig) diff --git a/config/webpack.dev.conf.js b/config/webpack.dev.conf.js index 61d9510..36d691b 100644 --- a/config/webpack.dev.conf.js +++ b/config/webpack.dev.conf.js @@ -9,7 +9,7 @@ const commonExcludes = require('../lib/common-excludes') const userWebpackConfig = require('../lib/get-user-webpack-config')('dev') // so that everything is absolute -webpackConfig.output.publicPath = `${config.domain}:${config.port}/` +webpackConfig.output.publicPath = `${config.devDomain}/` // add hot-reload related code to entry chunks Object.keys(webpackConfig.entry).forEach((name) => { From 564098141ecca2cfdb0d069824dd940b6f54dd09 Mon Sep 17 00:00:00 2001 From: Michael Johnston Date: Mon, 16 Oct 2017 21:47:42 -0700 Subject: [PATCH 3/4] tls end-to-end tunnel requires http on localhost --- config/index.js | 1 + scripts/serve.js | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/config/index.js b/config/index.js index 4fc3029..6c12daa 100644 --- a/config/index.js +++ b/config/index.js @@ -7,6 +7,7 @@ let config = { paths, domain: 'https://localhost', port: 8080, + serveHttps: true, regex: { images: /\.(png|svg|jpg|gif)$/, static: /\.(liquid|json)$/ diff --git a/scripts/serve.js b/scripts/serve.js index cd4e76b..d07f82d 100755 --- a/scripts/serve.js +++ b/scripts/serve.js @@ -10,6 +10,7 @@ const express = require('express') const fs = require('fs') const path = require('path') const https = require('https') +const http = require('http') const webpack = require('webpack') const webpackDevMiddleware = require('webpack-dev-middleware') const webpackHotMiddleware = require('webpack-hot-middleware') @@ -29,7 +30,7 @@ const sslOptions = { } const app = express() -const server = https.createServer(sslOptions, app) +const server = config.serveHttps ? https.createServer(sslOptions, app) : http.createServer(app) const compiler = webpack(webpackConfig) const shopifyUrl = `https://${config.shopify[env].store}` @@ -118,6 +119,8 @@ compiler.plugin('done', (stats) => { console.log(chalk.green('Compiled successfully!')) console.log('\nThe app is running at:\n') console.log(` ${chalk.cyan(previewUrl)}`) + console.log('\nHMR is running at:\n') + console.log(` ${chalk.cyan(config.devDomain)}`) } // files we'll upload From d90e66f72f616bb09c748e5513b8d96268eeb7cb Mon Sep 17 00:00:00 2001 From: Michael Johnston Date: Tue, 17 Oct 2017 09:02:32 -0700 Subject: [PATCH 4/4] set devDomain regardless of presence of custom server config --- config/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/index.js b/config/index.js index 6c12daa..0b9a15d 100644 --- a/config/index.js +++ b/config/index.js @@ -16,9 +16,10 @@ let config = { if(fs.existsSync(paths.userServerConfig)) { config = merge(true, config, YAML.load(paths.userServerConfig)) - config.devDomain = config.devDomain || `${config.domain}:${config.port}` } +config.devDomain = config.devDomain || `${config.domain}:${config.port}` + config.shopify = YAML.load(paths.userShopifyConfig) module.exports = config