spinjs
Version:
<p align="center"><a href="#"><img width="150" src="https://rawgit.com/sysgears/spinjs/master/logo.svg"></a></p>
100 lines • 4.84 kB
JavaScript
;
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
t[p[i]] = s[p[i]];
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var path = require("path");
var merge = require("webpack-merge");
var createRequire_1 = require("./createRequire");
var EnhancedError_1 = require("./EnhancedError");
var Stack_1 = require("./Stack");
var ConfigReader = (function () {
function ConfigReader(spin, plugins) {
this.spin = spin;
this.plugins = plugins;
}
ConfigReader.prototype.readConfig = function (filePath) {
var configObject;
if (fs.existsSync(filePath)) {
var extname = path.extname(filePath);
if (['.json', ''].indexOf(extname) >= 0) {
try {
configObject = JSON.parse(fs.readFileSync(filePath).toString());
if (path.basename(filePath) === 'package.json') {
configObject = configObject.spin;
}
}
catch (e) {
throw new EnhancedError_1.default("Error parsing " + path.resolve(filePath), e);
}
}
else {
var exports_1 = require(path.resolve(filePath));
configObject = exports_1 instanceof Function ? exports_1(this.spin) : exports_1;
}
}
return typeof configObject === 'undefined' ? undefined : this._createBuilders(filePath, configObject);
};
ConfigReader.prototype._createBuilders = function (filePath, config) {
if (typeof config === 'string' || (typeof config === 'object' && config.constructor === Array)) {
config = {
builders: {
app: config
}
};
}
config.options = config.options || {};
var relativePath = path.relative(this.spin.cwd, path.dirname(filePath));
var builders = {};
var _a = config.options, stack = _a.stack, plugins = _a.plugins, options = __rest(_a, ["stack", "plugins"]);
for (var _i = 0, _b = Object.keys(config.builders); _i < _b.length; _i++) {
var name = _b[_i];
var builderVal = config.builders[name];
var builder = typeof builderVal === 'object' && builderVal.constructor !== Array ? __assign({}, builderVal) : { stack: builderVal };
builder.name = name;
builder.require = createRequire_1.default(path.resolve(relativePath), this.spin.cwd);
builder.stack = new Stack_1.default(config.options.stack || [], typeof builder === 'object' ? builder.stack : builder);
builder.plugins = (config.plugins || []).concat(builder.plugins || []);
builder.roles = builder.roles || ['build', 'watch'];
var merged = merge(options, builder);
for (var _c = 0, _d = Object.keys(merged); _c < _d.length; _c++) {
var key = _d[_c];
builder[key] = merged[key];
}
var builderId = relativePath + "[" + builder.name + "]";
builder.id = builderId;
builders[builderId] = builder;
builder.buildDir =
builder.backendBuildDir || builder.frontendBuildDir
? undefined
: path.join(relativePath, builder.buildDir || 'build');
builder.dllBuildDir = path.join(relativePath, builder.dllBuildDir || 'build/dll');
builder.webpackDll = typeof builder.webpackDll !== 'undefined' ? builder.webpackDll : true;
builder.sourceMap = typeof builder.sourceMap !== 'undefined' ? builder.sourceMap : true;
builder.cache =
typeof builder.cache === 'string' && builder.cache !== 'auto'
? path.join(relativePath, builder.cache)
: typeof builder.cache !== 'undefined' ? builder.cache : 'auto';
builder.plugins = this.plugins.concat((builder.plugins || []).map(function (pluginName) { return new (require(pluginName))(); }));
}
return builders;
};
return ConfigReader;
}());
exports.default = ConfigReader;
//# sourceMappingURL=ConfigReader.js.map