diff --git a/dist/server/build.js b/dist/server/build.js index 299d6f7b55bc..318ab0802072 100644 --- a/dist/server/build.js +++ b/dist/server/build.js @@ -52,6 +52,14 @@ var logger = console; _commander2.default.version(_package2.default.version).option('-s, --static-dir ', 'Directory where to load static files from', _utils.parseList).option('-o, --output-dir [dir-name]', 'Directory where to store built files').option('-c, --config-dir [dir-name]', 'Directory where to load Storybook configurations from').parse(process.argv); +// The key is the field created in `program` variable for +// each command line argument. Value is the env variable. +(0, _utils.getEnvConfig)(_commander2.default, { + staticDir: 'STORYBOOK_STATIC_DIR', + outputDir: 'STORYBOOK_OUTPUT_DIR', + configDir: 'STORYBOOK_CONFIG_DIR' +}); + // Build the webpack configuration using the `baseConfig` // custom `.babelrc` file and `webpack.config.js` files var configDir = _commander2.default.configDir || './.storybook'; diff --git a/dist/server/index.js b/dist/server/index.js index b724a521a2b2..ad137667aeb5 100755 --- a/dist/server/index.js +++ b/dist/server/index.js @@ -35,6 +35,16 @@ var logger = console; _commander2.default.version(_package2.default.version).option('-p, --port [number]', 'Port to run Storybook (Required)', parseInt).option('-h, --host [string]', 'Host to run Storybook').option('-s, --static-dir ', 'Directory where to load static files from', _utils.parseList).option('-c, --config-dir [dir-name]', 'Directory where to load Storybook configurations from').option('--dont-track', 'Do not send anonymous usage stats.').parse(process.argv); +// The key is the field created in `program` variable for +// each command line argument. Value is the env variable. +(0, _utils.getEnvConfig)(_commander2.default, { + port: 'STORYBOOK_PORT', + host: 'STORYBOOK_HOST', + staticDir: 'STORYBOOK_STATIC_DIR', + configDir: 'STORYBOOK_CONFIG_DIR', + dontTrack: 'STORYBOOK_DO_NOT_TRACK' +}); + if (_commander2.default.dontTrack) { (0, _track_usage.dontTrack)(); } diff --git a/dist/server/utils.js b/dist/server/utils.js index f212d415d282..f57bb212b260 100644 --- a/dist/server/utils.js +++ b/dist/server/utils.js @@ -3,8 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true }); + +var _keys = require('babel-runtime/core-js/object/keys'); + +var _keys2 = _interopRequireDefault(_keys); + exports.parseList = parseList; exports.getHeadHtml = getHeadHtml; +exports.getEnvConfig = getEnvConfig; var _path = require('path'); @@ -28,4 +34,14 @@ function getHeadHtml(configDirPath) { } return headHtml; +} + +function getEnvConfig(program, configEnv) { + (0, _keys2.default)(configEnv).forEach(function (fieldName) { + var envVarName = configEnv[fieldName]; + var envVarValue = process.env[envVarName]; + if (envVarValue) { + program[fieldName] = envVarValue; + } + }); } \ No newline at end of file diff --git a/src/server/build.js b/src/server/build.js index 52921288e822..d23f54fc39ed 100644 --- a/src/server/build.js +++ b/src/server/build.js @@ -12,7 +12,7 @@ import baseConfig from './config/webpack.config.prod'; import loadConfig from './config'; import getIndexHtml from './index.html'; import getIframeHtml from './iframe.html'; -import { getHeadHtml, parseList } from './utils'; +import { getHeadHtml, parseList, getEnvConfig } from './utils'; // avoid ESLint errors const logger = console; @@ -24,6 +24,14 @@ program .option('-c, --config-dir [dir-name]', 'Directory where to load Storybook configurations from') .parse(process.argv); +// The key is the field created in `program` variable for +// each command line argument. Value is the env variable. +getEnvConfig(program, { + staticDir: 'STORYBOOK_STATIC_DIR', + outputDir: 'STORYBOOK_OUTPUT_DIR', + configDir: 'STORYBOOK_CONFIG_DIR', +}); + // Build the webpack configuration using the `baseConfig` // custom `.babelrc` file and `webpack.config.js` files const configDir = program.configDir || './.storybook'; diff --git a/src/server/index.js b/src/server/index.js index 141d6447fb84..ea6239dd5b42 100755 --- a/src/server/index.js +++ b/src/server/index.js @@ -6,7 +6,7 @@ import path from 'path'; import fs from 'fs'; import storybook from './middleware'; import packageJson from '../../package.json'; -import { parseList } from './utils'; +import { parseList, getEnvConfig } from './utils'; import { track, dontTrack } from './track_usage'; const logger = console; @@ -20,6 +20,15 @@ program .option('--dont-track', 'Do not send anonymous usage stats.') .parse(process.argv); +// The key is the field created in `program` variable for +// each command line argument. Value is the env variable. +getEnvConfig(program, { + port: 'STORYBOOK_PORT', + host: 'STORYBOOK_HOST', + staticDir: 'STORYBOOK_STATIC_DIR', + configDir: 'STORYBOOK_CONFIG_DIR', + dontTrack: 'STORYBOOK_DO_NOT_TRACK', +}); if (program.dontTrack) { dontTrack(); diff --git a/src/server/utils.js b/src/server/utils.js index 816727ba2d57..d5f49afeaac5 100644 --- a/src/server/utils.js +++ b/src/server/utils.js @@ -14,3 +14,13 @@ export function getHeadHtml(configDirPath) { return headHtml; } + +export function getEnvConfig(program, configEnv) { + Object.keys(configEnv).forEach(fieldName => { + const envVarName = configEnv[fieldName]; + const envVarValue = process.env[envVarName]; + if (envVarValue) { + program[fieldName] = envVarValue; + } + }); +}