UNPKG

simplr-gulp

Version:

Fully functional gulpfile.js implementation. Tailored for Single Page Application. Written in TypeScript.

83 lines (82 loc) 3.99 kB
Object.defineProperty(exports, "__esModule", { value: true }); const fs = require("fs"); const logger_1 = require("../utils/logger"); const helpers_1 = require("../utils/helpers"); const configuration_defaults_1 = require("./configuration-defaults"); class ConfigurationLoader { Init() { } constructor() { this.tryToReadConfigurationFile(); this.checkTypeScriptConfigurationFiles(); this.readPackageJSON(); } ; readPackageJSON() { this.packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8')); } tryToReadConfigurationFile(cfgFileName = 'gulpconfig') { try { let config = JSON.parse(fs.readFileSync(`./${cfgFileName}.json`, "utf8")); let valid = true; if (config.CfgVersion !== configuration_defaults_1.DEFAULT_GULP_CONFIG.CfgVersion) { logger_1.LoggerInstance.warn(`'${cfgFileName}.json' file major version is not valid (v${config.CfgVersion} != v${configuration_defaults_1.DEFAULT_GULP_CONFIG.CfgVersion})!`); valid = false; } else if (config.CfgVersion < configuration_defaults_1.DEFAULT_GULP_CONFIG.CfgVersion) { logger_1.LoggerInstance.warn(`'${cfgFileName}.json' file version is too old (v${config.CfgVersion} < v${configuration_defaults_1.DEFAULT_GULP_CONFIG.CfgVersion})!`); valid = false; } else { this.config = config; } if (!valid) { logger_1.LoggerInstance.warn("Creating new file with default configuration."); helpers_1.WriteToFileAsJson(`${cfgFileName}-v${config.CfgVersion}.json`, config); this.config = configuration_defaults_1.DEFAULT_GULP_CONFIG; helpers_1.WriteToFileAsJson(`${cfgFileName}.json`, this.config); } } catch (e) { this.config = configuration_defaults_1.DEFAULT_GULP_CONFIG; helpers_1.WriteToFileAsJson(`${cfgFileName}.json`, this.config); logger_1.LoggerInstance.warn("'gulpconfig.json' was not found or is not valid. Creating default configuration file."); } } checkTypeScriptConfigurationFiles() { try { if (!fs.statSync(`./${this.config.TypeScriptConfig.Development}`).isFile()) throw new Error(); } catch (e) { let tsConfig = { compilerOptions: configuration_defaults_1.DEFAULT_TYPESCRIPT_CONFIG.compilerOptions, exclude: configuration_defaults_1.DEFAULT_TYPESCRIPT_CONFIG.exclude }; tsConfig.exclude.push(this.config.Directories.Build); helpers_1.WriteToFileAsJson(this.config.TypeScriptConfig.Development, tsConfig); logger_1.LoggerInstance.warn(`'${this.config.TypeScriptConfig.Development}' was not found. Creating default TypeScript configuration file.`); } try { if (!fs.statSync(`./${this.config.TypeScriptConfig.Production}`).isFile()) throw new Error(); } catch (e) { let tsConfig = configuration_defaults_1.DEFAULT_TYPESCRIPT_CONFIG; tsConfig.compilerOptions.inlineSources = false; tsConfig.compilerOptions.removeComments = true; tsConfig.compilerOptions.sourceMap = false; helpers_1.WriteToFileAsJson(this.config.TypeScriptConfig.Production, tsConfig); logger_1.LoggerInstance.warn(`'${this.config.TypeScriptConfig.Production}' was not found. Creating default TypeScript configuration file.`); } } get GulpConfig() { return this.config; } get DefaultExtensions() { return configuration_defaults_1.DEFAULT_EXTENSIONS_MAP; } get Package() { return this.packageJson; } } exports.Configuration = new ConfigurationLoader();