UNPKG

pilet-webpack-plugin

Version:

Webpack plugin for generating a valid pilet bundle.

80 lines 3.93 kB
"use strict"; 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