pilet-webpack-plugin
Version:
Webpack plugin for generating a valid pilet bundle.
80 lines • 3.93 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__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;
};
return __assign.apply(this, arguments);
};
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
Object.defineProperty(exports, "__esModule", { value: true });
var path_1 = require("path");
var webpack_1 = require("webpack");
var helpers_1 = require("./helpers");
var pluginName = 'PiletWebpackPlugin';
var PiletWebpackPlugin = /** @class */ (function () {
function PiletWebpackPlugin(piletPackage, options) {
if (options === void 0) { options = {}; }
this.piletPackage = piletPackage;
this.options = options;
}
PiletWebpackPlugin.prototype.apply = function (compiler) {
var _a, _b, _c, _d;
var piletPkg = this.piletPackage;
var shellPkg = require(piletPkg.piral.name + "/package.json");
var shortName = piletPkg.name.replace(/\W/gi, '');
var jsonpFunction = "pr_" + shortName;
var environment = process.env.NODE_ENV || 'development';
var piralExternals = (_b = (_a = shellPkg.pilets) === null || _a === void 0 ? void 0 : _a.externals) !== null && _b !== void 0 ? _b : [];
var piletExternals = (_c = piletPkg.externals) !== null && _c !== void 0 ? _c : [];
var peerDependencies = Object.keys((_d = piletPkg.peerDependencies) !== null && _d !== void 0 ? _d : {});
var externals = __spreadArrays(piralExternals, piletExternals, peerDependencies);
var variables = __assign(__assign({}, helpers_1.getVariables(piletPkg, environment)), this.options.variables);
var plugins = [
new webpack_1.BannerPlugin({
banner: "//@pilet v:1(" + jsonpFunction + ")",
entryOnly: true,
raw: true,
}),
new webpack_1.DefinePlugin(helpers_1.getDefineVariables(variables)),
];
helpers_1.setEnvironment(variables);
plugins.forEach(function (plugin) { return plugin.apply(compiler); });
compiler.hooks.done.tap(pluginName, function (statsData) {
if (!statsData.hasErrors()) {
var _a = compiler.options.output, path = _a.path, filename = _a.filename;
if (typeof filename === 'string') {
var file = path_1.resolve(path, filename);
helpers_1.wrapPilet(file, jsonpFunction);
}
else {
var main = statsData.compilation.chunks.filter(function (m) { return m.entryModule; }).map(function (m) { return m.files[0]; })[0];
var file = path_1.resolve(compiler.outputPath, main);
helpers_1.wrapPilet(file, jsonpFunction);
}
}
});
compiler.hooks.afterEnvironment.tap(pluginName, function () {
var current = compiler.options.externals;
compiler.options.output.jsonpFunction = jsonpFunction + "_chunks";
compiler.options.output.libraryTarget = 'umd';
compiler.options.output.library = piletPkg.name;
compiler.options.externals = Array.isArray(current)
? __spreadArrays(current, externals) : current
? __spreadArrays([current], externals) : externals;
});
};
return PiletWebpackPlugin;
}());
exports.PiletWebpackPlugin = PiletWebpackPlugin;
//# sourceMappingURL=index.js.map
;