/
lostSun
/
project-client-server-apps
Обзор
Документация
Войти
/
lostSun
/
project-client-server-apps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
node_modules/react-dev-utils/InlineChunkHtmlPlugin.js
62 строки
2 KB
1lostsun
initial commit
05 май 2025, 11:35
05 май 2025, 11:35
fe8f535
Код
Авторство
О чём код?
/** * 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 this source tree. */ 'use strict'; 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]; // } // }); // }); }); } } module.exports = InlineChunkHtmlPlugin;