diff --git a/config/index.js b/config/index.js index a170271..0b9a15d 100644 --- a/config/index.js +++ b/config/index.js @@ -1,13 +1,25 @@ +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, + serveHttps: true, 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.devDomain = config.devDomain || `${config.domain}:${config.port}` + +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/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) => { 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", 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