jgb-cli
Version:
```shell npm i -g jgb-cli #全局安装 ```
193 lines • 12.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var lib_1 = require("jgb-shared/lib");
var awaitEventEmitter_1 = require("jgb-shared/lib/awaitEventEmitter");
var StaticAsset_1 = require("jgb-shared/lib/StaticAsset");
var path = require("path");
var Compiler = /** @class */ (function (_super) {
tslib_1.__extends(Compiler, _super);
function Compiler(options) {
var _this = _super.call(this) || this;
_this.options = options;
_this.extensions = new Map();
return _this;
}
/**
* 预加载插件等信息
*/
Compiler.prototype.preload = function (options) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.loadPresets(options.presets)];
case 1:
_a.sent();
return [4 /*yield*/, this.loadPlugins(options.plugins)];
case 2:
_a.sent();
return [2 /*return*/];
}
});
});
};
Compiler.prototype.init = function (resolver) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var exts;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.preload(this.options)];
case 1:
_a.sent();
this.resolver = resolver;
exts = tslib_1.__spread(this.extensions.keys());
this.options.extensions = new Set(exts);
return [2 /*return*/];
}
});
});
};
/**
* 加载插件
* @param plugins
*/
Compiler.prototype.loadPlugins = function (plugins) {
if (plugins === void 0) { plugins = []; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
var e_1, _a, relative, _b, _c, plugin, _d, pluginName, pluginConfig, loadedPlugin, invoke, e_1_1;
return tslib_1.__generator(this, function (_e) {
switch (_e.label) {
case 0:
relative = path.join(this.options.rootDir);
_e.label = 1;
case 1:
_e.trys.push([1, 7, 8, 9]);
_b = tslib_1.__values(new Set(plugins)), _c = _b.next();
_e.label = 2;
case 2:
if (!!_c.done) return [3 /*break*/, 6];
plugin = _c.value;
_d = tslib_1.__read([].concat(plugin), 2), pluginName = _d[0], pluginConfig = _d[1];
if (!pluginName.startsWith('jgb-plugin-')) {
pluginName = "jgb-plugin-" + pluginName;
}
if (!pluginConfig) {
pluginConfig = {};
}
return [4 /*yield*/, lib_1.localRequire(pluginName, relative)];
case 3:
loadedPlugin = _e.sent();
invoke = loadedPlugin.default || loadedPlugin;
return [4 /*yield*/, invoke(this, pluginConfig)];
case 4:
_e.sent();
_e.label = 5;
case 5:
_c = _b.next();
return [3 /*break*/, 2];
case 6: return [3 /*break*/, 9];
case 7:
e_1_1 = _e.sent();
e_1 = { error: e_1_1 };
return [3 /*break*/, 9];
case 8:
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
return [7 /*endfinally*/];
case 9: return [2 /*return*/];
}
});
});
};
/**
* 加载预设配置
* @param presets
*/
Compiler.prototype.loadPresets = function (presets) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var e_2, _a, relative, _b, _c, preset, _d, presetName, presetConfig, loadedPlugin, invoke, e_2_1;
return tslib_1.__generator(this, function (_e) {
switch (_e.label) {
case 0:
relative = path.join(this.options.rootDir);
_e.label = 1;
case 1:
_e.trys.push([1, 7, 8, 9]);
_b = tslib_1.__values(new Set(presets)), _c = _b.next();
_e.label = 2;
case 2:
if (!!_c.done) return [3 /*break*/, 6];
preset = _c.value;
_d = tslib_1.__read([].concat(preset), 2), presetName = _d[0], presetConfig = _d[1];
if (!presetName.startsWith('jgb-preset-')) {
presetName = "jgb-preset-" + presetName;
}
if (!presetConfig) {
presetConfig = {};
}
return [4 /*yield*/, lib_1.localRequire(presetName, relative)];
case 3:
loadedPlugin = _e.sent();
invoke = loadedPlugin.default || loadedPlugin;
return [4 /*yield*/, invoke(this, Object.assign(presetConfig, {
coreOptions: this.options
}))];
case 4:
_e.sent();
_e.label = 5;
case 5:
_c = _b.next();
return [3 /*break*/, 2];
case 6: return [3 /*break*/, 9];
case 7:
e_2_1 = _e.sent();
e_2 = { error: e_2_1 };
return [3 /*break*/, 9];
case 8:
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_2) throw e_2.error; }
return [7 /*endfinally*/];
case 9: return [2 /*return*/];
}
});
});
};
/**
* addAssetsType 时会自动添加parentCompiler
* @param exts
* @param asset
*/
Compiler.prototype.addAssetsType = function (exts, asset) {
var _this = this;
[].concat(exts).forEach(function (ext) {
if (typeof asset === 'string') {
var assetTemp = require(asset);
asset = (assetTemp.default || assetTemp);
}
asset.prototype.parentCompiler = _this;
_this.extensions.set(ext.toLowerCase(), asset);
});
};
Compiler.prototype.findParser = function (fileName, fromPipeline) {
if (fromPipeline === void 0) { fromPipeline = false; }
var extension = path.extname(fileName).toLowerCase();
return this.extensions.get(extension);
};
Compiler.prototype.getAsset = function (fileName) {
var Parser = this.findParser(fileName);
this.options.parser = this;
if (typeof Parser === 'undefined') {
return new StaticAsset_1.default(fileName, this.options);
}
else {
return new Parser(fileName, this.options);
}
};
return Compiler;
}(awaitEventEmitter_1.default));
exports.default = Compiler;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0NBTXdCO0FBQ3hCLHNFQUFpRTtBQUVqRSwwREFBcUQ7QUFDckQsMkJBQTZCO0FBSTdCO0lBQXNDLG9DQUFpQjtJQUlyRCxrQkFBb0IsT0FBcUI7UUFBekMsWUFDRSxpQkFBTyxTQUNSO1FBRm1CLGFBQU8sR0FBUCxPQUFPLENBQWM7UUFIakMsZ0JBQVUsR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQzs7SUFLbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0csMEJBQU8sR0FBYixVQUFjLE9BQXFCOzs7OzRCQUNqQyxxQkFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBQTs7d0JBQXZDLFNBQXVDLENBQUM7d0JBQ3hDLHFCQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFBOzt3QkFBdkMsU0FBdUMsQ0FBQzs7Ozs7S0FDekM7SUFFSyx1QkFBSSxHQUFWLFVBQVcsUUFBa0I7Ozs7OzRCQUMzQixxQkFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQTs7d0JBQWhDLFNBQWdDLENBQUM7d0JBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO3dCQUNuQixJQUFJLG9CQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzt3QkFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7O0tBQ3pDO0lBRUQ7OztPQUdHO0lBQ0csOEJBQVcsR0FBakIsVUFBa0IsT0FBNkI7UUFBN0Isd0JBQUEsRUFBQSxZQUE2Qjs7Ozs7O3dCQUN2QyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FB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