UNPKG

st-bundle

Version:

CLI for watching and bundling SpringType projects.

138 lines (137 loc) 5.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const appRoot = require("app-root-path"); const path = require("path"); const env_1 = require("../env"); const utils_1 = require("../utils/utils"); const PrivateConfig_1 = require("./PrivateConfig"); function createConfig(props) { const config = new PrivateConfig_1.PrivateConfig(props); config.root = process.env.APP_ROOT || appRoot.path; config.defaultCollectionName = 'default'; if (props.homeDir) { config.homeDir = utils_1.ensureAbsolutePath(props.homeDir, env_1.env.SCRIPT_PATH); } else { config.homeDir = env_1.env.SCRIPT_PATH; } config.modules = [env_1.env.FUSE_MODULES]; if (props.modules) { config.modules = config.modules.concat(props.modules).map(item => utils_1.ensureAbsolutePath(item, env_1.env.SCRIPT_PATH)); } if (props.output) { config.output = props.output; } if (props.alias) { config.alias = props.alias; } if (props.tsConfig) { if (typeof props.tsConfig === 'string') { config.tsConfig = utils_1.ensureAbsolutePath(props.tsConfig, env_1.env.SCRIPT_PATH); } else { config.tsConfig = props.tsConfig; } } if (props.target) { config.target = props.target; } // allow them by default config.allowSyntheticDefaultImports = true; if (props.allowSyntheticDefaultImports !== undefined) { config.allowSyntheticDefaultImports = props.allowSyntheticDefaultImports; } config.webIndex = { enabled: false, }; if (typeof props.webIndex === 'boolean') { config.webIndex.enabled = props.webIndex; } else if (typeof props.webIndex === 'object') { config.webIndex = props.webIndex; config.webIndex.enabled = typeof props.webIndex.enabled === 'boolean' ? props.webIndex.enabled : true; } config.sourceMap = { css: true, vendor: false, project: true, sourceRoot: '/', }; if (props.sourceMap !== undefined) { if (props.sourceMap === false) { config.sourceMap.project = false; config.sourceMap.css = false; } if (typeof props.sourceMap === 'object') { if (props.sourceMap.sourceRoot) { config.sourceMap.sourceRoot = props.sourceMap.sourceRoot; } if (props.sourceMap.css === false) { config.sourceMap.css = false; } if (props.sourceMap.vendor === true) { config.sourceMap.vendor = true; } if (props.sourceMap.project === false) { config.sourceMap.project = false; } } } config.plugins = props.plugins ? props.plugins : []; if (props.logging) { config.logging = props.logging; } else { config.logging = { level: 'succinct' }; } config.webWorkers = { enabled: true }; if (props.webWorkers) { if (typeof props.webWorkers === 'boolean') config.webWorkers.enabled = props.webWorkers; if (typeof props.webWorkers === 'object') { config.webWorkers = props.webWorkers; config.webWorkers.enabled = props.webWorkers.enabled !== undefined ? props.webWorkers.enabled : true; } } // dev server ********************************************************************************************* config.devServer = { enabled: false }; if (typeof props.devServer === 'boolean') { config.devServer.enabled = props.devServer; } else if (typeof props.devServer === 'object') { config.devServer.enabled = typeof props.devServer.enabled === 'boolean' ? props.devServer.enabled : true; config.devServer = props.devServer; } // entry scripts **************************************************************************************** if (props.entry) { config.entries = [].concat(props.entry); } // cache ************************************************************************************************ config.cache = { enabled: false, FTL: config.target !== 'server' && config.webIndex.enabled, root: path.join(env_1.env.APP_ROOT, 'node_modules/.fusebox'), }; if (typeof props.cache === 'boolean') { config.cache.enabled = props.cache; } else if (typeof props.cache === 'object') { config.cache.enabled = typeof props.cache.enabled === 'boolean' ? props.cache.enabled : env_1.env.isTest ? false : true; if (props.cache.root !== undefined) { config.cache.root = utils_1.ensureAbsolutePath(props.cache.root, env_1.env.SCRIPT_PATH); } if (props.cache.FTL !== undefined) { config.cache.FTL = props.cache.FTL; } } else if (props.cache === undefined && !env_1.env.isTest) { config.cache.enabled = true; } config.stylesheet = {}; if (props.stylesheet) { config.stylesheet = Object.assign(Object.assign({}, config.stylesheet), props.stylesheet); } config.init(props); return config; } exports.createConfig = createConfig;