simplr-gulp
Version:
Fully functional gulpfile.js implementation. Tailored for Single Page Application. Written in TypeScript.
83 lines (82 loc) • 3.99 kB
JavaScript
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();