st-bundle
Version:
CLI for watching and bundling SpringType projects.
138 lines (137 loc) • 5.22 kB
JavaScript
;
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;