@anansi/webpack-config
Version:
Production ready webpack for React
61 lines (58 loc) • 7.67 kB
JavaScript
;
exports.__esModule = true;
exports.default = void 0;
/**
* Copyright (c) 2015-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of https://github.com/facebook/create-react-app/blob/master/packages/react-dev-utils/InlineChunkHtmlPlugin.js.
*/
class InlineChunkHtmlPlugin {
constructor(htmlWebpackPlugin, tests) {
this.htmlWebpackPlugin = htmlWebpackPlugin;
this.tests = tests;
}
getInlinedTag(publicPath, assets, tag) {
if (tag.tagName !== 'script' || !(tag.attributes && tag.attributes.src)) {
return tag;
}
const scriptName = publicPath ? tag.attributes.src.replace(publicPath, '') : tag.attributes.src;
if (!this.tests.some(test => scriptName.match(test))) {
return tag;
}
const asset = assets[scriptName];
if (asset == null) {
return tag;
}
return {
tagName: 'script',
innerHTML: asset.source(),
closeTag: true
};
}
apply(compiler) {
let publicPath = compiler.options.output.publicPath || '';
if (publicPath && !publicPath.endsWith('/')) {
publicPath += '/';
}
compiler.hooks.compilation.tap('InlineChunkHtmlPlugin', compilation => {
const tagFunction = tag => this.getInlinedTag(publicPath, compilation.assets, tag);
const hooks = this.htmlWebpackPlugin.getHooks(compilation);
hooks.alterAssetTagGroups.tap('InlineChunkHtmlPlugin', assets => {
assets.headTags = assets.headTags.map(tagFunction);
assets.bodyTags = assets.bodyTags.map(tagFunction);
});
// Still emit the runtime chunk for users who do not use our generated
// index.html file.
// hooks.afterEmit.tap('InlineChunkHtmlPlugin', () => {
// Object.keys(compilation.assets).forEach(assetName => {
// if (this.tests.some(test => assetName.match(test))) {
// delete compilation.assets[assetName];
// }
// });
// });
});
}
}
exports.default = InlineChunkHtmlPlugin;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbmxpbmVDaHVua0h0bWxQbHVnaW4iLCJjb25zdHJ1Y3RvciIsImh0bWxXZWJwYWNrUGx1Z2luIiwidGVzdHMiLCJnZXRJbmxpbmVkVGFnIiwicHVibGljUGF0aCIsImFzc2V0cyIsInRhZyIsInRhZ05hbWUiLCJhdHRyaWJ1dGVzIiwic3JjIiwic2NyaXB0TmFtZSIsInJlcGxhY2UiLCJzb21lIiwidGVzdCIsIm1hdGNoIiwiYXNzZXQiLCJpbm5lckhUTUwiLCJzb3VyY2UiLCJjbG9zZVRhZyIsImFwcGx5IiwiY29tcGlsZXIiLCJvcHRpb25zIiwib3V0cHV0IiwiZW5kc1dpdGgiLCJob29rcyIsImNvbXBpbGF0aW9uIiwidGFwIiwidGFnRnVuY3Rpb24iLCJnZXRIb29rcyIsImFsdGVyQXNzZXRUYWdHcm91cHMiLCJoZWFkVGFncyIsIm1hcCIsImJvZHlUYWdzIiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcGx1Z2lucy9JbmxpbmVDaHVua0h0bWxQbHVnaW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2NyZWF0ZS1yZWFjdC1hcHAvYmxvYi9tYXN0ZXIvcGFja2FnZXMvcmVhY3QtZGV2LXV0aWxzL0lubGluZUNodW5rSHRtbFBsdWdpbi5qcy5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbmxpbmVDaHVua0h0bWxQbHVnaW4ge1xuICBjb25zdHJ1Y3RvcihodG1sV2VicGFja1BsdWdpbiwgdGVzdHMpIHtcbiAgICB0aGlzLmh0bWxXZWJwYWNrUGx1Z2luID0gaHRtbFdlYnBhY2tQbHVnaW47XG4gICAgdGhpcy50ZXN0cyA9IHRlc3RzO1xuICB9XG5cbiAgZ2V0SW5saW5lZFRhZyhwdWJsaWNQYXRoLCBhc3NldHMsIHRhZykge1xuICAgIGlmICh0YWcudGFnTmFtZSAhPT0gJ3NjcmlwdCcgfHwgISh0YWcuYXR0cmlidXRlcyAmJiB0YWcuYXR0cmlidXRlcy5zcmMpKSB7XG4gICAgICByZXR1cm4gdGFnO1xuICAgIH1cbiAgICBjb25zdCBzY3JpcHROYW1lID1cbiAgICAgIHB1YmxpY1BhdGggP1xuICAgICAgICB0YWcuYXR0cmlidXRlcy5zcmMucmVwbGFjZShwdWJsaWNQYXRoLCAnJylcbiAgICAgIDogdGFnLmF0dHJpYnV0ZXMuc3JjO1xuICAgIGlmICghdGhpcy50ZXN0cy5zb21lKHRlc3QgPT4gc2NyaXB0TmFtZS5tYXRjaCh0ZXN0KSkpIHtcbiAgICAgIHJldHVybiB0YWc7XG4gICAgfVxuICAgIGNvbnN0IGFzc2V0ID0gYXNzZXRzW3NjcmlwdE5hbWVdO1xuICAgIGlmIChhc3NldCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGFnO1xuICAgIH1cbiAgICByZXR1cm4geyB0YWdOYW1lOiAnc2NyaXB0JywgaW5uZXJIVE1MOiBhc3NldC5zb3VyY2UoKSwgY2xvc2VUYWc6IHRydWUgfTtcbiAgfVxuXG4gIGFwcGx5KGNvbXBpbGVyKSB7XG4gICAgbGV0IHB1YmxpY1BhdGggPSBjb21waWxlci5vcHRpb25zLm91dHB1dC5wdWJsaWNQYXRoIHx8ICcnO1xuICAgIGlmIChwdWJsaWNQYXRoICYmICFwdWJsaWNQYXRoLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgIHB1YmxpY1BhdGggKz0gJy8nO1xuICAgIH1cblxuICAgIGNvbXBpbGVyLmhvb2tzLmNvbXBpbGF0aW9uLnRhcCgnSW5saW5lQ2h1bmtIdG1sUGx1Z2luJywgY29tcGlsYXRpb24gPT4ge1xuICAgICAgY29uc3QgdGFnRnVuY3Rpb24gPSB0YWcgPT5cbiAgICAgICAgdGhpcy5nZXRJbmxpbmVkVGFnKHB1YmxpY1BhdGgsIGNvbXBpbGF0aW9uLmFzc2V0cywgdGFnKTtcblxuICAgICAgY29uc3QgaG9va3MgPSB0aGlzLmh0bWxXZWJwYWNrUGx1Z2luLmdldEhvb2tzKGNvbXBpbGF0aW9uKTtcbiAgICAgIGhvb2tzLmFsdGVyQXNzZXRUYWdHcm91cHMudGFwKCdJbmxpbmVDaHVua0h0bWxQbHVnaW4nLCBhc3NldHMgPT4ge1xuICAgICAgICBhc3NldHMuaGVhZFRhZ3MgPSBhc3NldHMuaGVhZFRhZ3MubWFwKHRhZ0Z1bmN0aW9uKTtcbiAgICAgICAgYXNzZXRzLmJvZHlUYWdzID0gYXNzZXRzLmJvZHlUYWdzLm1hcCh0YWdGdW5jdGlvbik7XG4gICAgICB9KTtcblxuICAgICAgLy8gU3RpbGwgZW1pdCB0aGUgcnVudGltZSBjaHVuayBmb3IgdXNlcnMgd2hvIGRvIG5vdCB1c2Ugb3VyIGdlbmVyYXRlZFxuICAgICAgLy8gaW5kZXguaHRtbCBmaWxlLlxuICAgICAgLy8gaG9va3MuYWZ0ZXJFbWl0LnRhcCgnSW5saW5lQ2h1bmtIdG1sUGx1Z2luJywgKCkgPT4ge1xuICAgICAgLy8gICBPYmplY3Qua2V5cyhjb21waWxhdGlvbi5hc3NldHMpLmZvckVhY2goYXNzZXROYW1lID0+IHtcbiAgICAgIC8vICAgICBpZiAodGhpcy50ZXN0cy5zb21lKHRlc3QgPT4gYXNzZXROYW1lLm1hdGNoKHRlc3QpKSkge1xuICAgICAgLy8gICAgICAgZGVsZXRlIGNvbXBpbGF0aW9uLmFzc2V0c1thc3NldE5hbWVdO1xuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgfSk7XG4gICAgICAvLyB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLE1BQU1BLHFCQUFxQixDQUFDO0VBQ3pDQyxXQUFXQSxDQUFDQyxpQkFBaUIsRUFBRUMsS0FBSyxFQUFFO0lBQ3BDLElBQUksQ0FBQ0QsaUJBQWlCLEdBQUdBLGlCQUFpQjtJQUMxQyxJQUFJLENBQUNDLEtBQUssR0FBR0EsS0FBSztFQUNwQjtFQUVBQyxhQUFhQSxDQUFDQyxVQUFVLEVBQUVDLE1BQU0sRUFBRUMsR0FBRyxFQUFFO0lBQ3JDLElBQUlBLEdBQUcsQ0FBQ0MsT0FBTyxLQUFLLFFBQVEsSUFBSSxFQUFFRCxHQUFHLENBQUNFLFVBQVUsSUFBSUYsR0FBRyxDQUFDRSxVQUFVLENBQUNDLEdBQUcsQ0FBQyxFQUFFO01BQ3ZFLE9BQU9ILEdBQUc7SUFDWjtJQUNBLE1BQU1JLFVBQVUsR0FDZE4sVUFBVSxHQUNSRSxHQUFHLENBQUNFLFVBQVUsQ0FBQ0MsR0FBRyxDQUFDRSxPQUFPLENBQUNQLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FDMUNFLEdBQUcsQ0FBQ0UsVUFBVSxDQUFDQyxHQUFHO0lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUNQLEtBQUssQ0FBQ1UsSUFBSSxDQUFDQyxJQUFJLElBQUlILFVBQVUsQ0FBQ0ksS0FBSyxDQUFDRCxJQUFJLENBQUMsQ0FBQyxFQUFFO01BQ3BELE9BQU9QLEdBQUc7SUFDWjtJQUNBLE1BQU1TLEtBQUssR0FBR1YsTUFBTSxDQUFDSyxVQUFVLENBQUM7SUFDaEMsSUFBSUssS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPVCxHQUFHO0lBQ1o7SUFDQSxPQUFPO01BQUVDLE9BQU8sRUFBRSxRQUFRO01BQUVTLFNBQVMsRUFBRUQsS0FBSyxDQUFDRSxNQUFNLENBQUMsQ0FBQztNQUFFQyxRQUFRLEVBQUU7SUFBSyxDQUFDO0VBQ3pFO0VBRUFDLEtBQUtBLENBQUNDLFFBQVEsRUFBRTtJQUNkLElBQUloQixVQUFVLEdBQUdnQixRQUFRLENBQUNDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDbEIsVUFBVSxJQUFJLEVBQUU7SUFDekQsSUFBSUEsVUFBVSxJQUFJLENBQUNBLFVBQVUsQ0FBQ21CLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtNQUMzQ25CLFVBQVUsSUFBSSxHQUFHO0lBQ25CO0lBRUFnQixRQUFRLENBQUNJLEtBQUssQ0FBQ0MsV0FBVyxDQUFDQyxHQUFHLENBQUMsdUJBQXVCLEVBQUVELFdBQVcsSUFBSTtNQUNyRSxNQUFNRSxXQUFXLEdBQUdyQixHQUFHLElBQ3JCLElBQUksQ0FBQ0gsYUFBYSxDQUFDQyxVQUFVLEVBQUVxQixXQUFXLENBQUNwQixNQUFNLEVBQUVDLEdBQUcsQ0FBQztNQUV6RCxNQUFNa0IsS0FBSyxHQUFHLElBQUksQ0FBQ3ZCLGlCQUFpQixDQUFDMkIsUUFBUSxDQUFDSCxXQUFXLENBQUM7TUFDMURELEtBQUssQ0FBQ0ssbUJBQW1CLENBQUNILEdBQUcsQ0FBQyx1QkFBdUIsRUFBRXJCLE1BQU0sSUFBSTtRQUMvREEsTUFBTSxDQUFDeUIsUUFBUSxHQUFHekIsTUFBTSxDQUFDeUIsUUFBUSxDQUFDQyxHQUFHLENBQUNKLFdBQVcsQ0FBQztRQUNsRHRCLE1BQU0sQ0FBQzJCLFFBQVEsR0FBRzNCLE1BQU0sQ0FBQzJCLFFBQVEsQ0FBQ0QsR0FBRyxDQUFDSixXQUFXLENBQUM7TUFDcEQsQ0FBQyxDQUFDOztNQUVGO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtJQUNGLENBQUMsQ0FBQztFQUNKO0FBQ0Y7QUFBQ00sT0FBQSxDQUFBQyxPQUFBLEdBQUFuQyxxQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==