/
githubmr
/
facebook-react
Обзор
Документация
Войти
/
githubmr
/
facebook-react
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
scripts/rollup/plugins/external-runtime-plugin.js
46 строк
1 KB
Sebastian Markbåge
[Fizz] Share code between inline and external runtime (#33066)
01 май 2025, 21:25
Не верифицирован
01 май 2025, 21:25
bb57fa7
Код
Авторство
О чём код?
/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ 'use strict'; module.exports = function externalRuntime() { // When generating the source code for the Fizz runtime chunks we use global identifiers to refer // to different parts of the implementation. When generating the external runtime we need to // replace those with local identifiers instead. return { name: 'scripts/rollup/plugins/dynamic-imports', renderChunk(source) { // This replaces "window['$globalVar']" with "$globalVar". const variables = new Set(); source = source.replace( /window\[['"](\$[A-z0-9_]*)['"]\]/g, (_, variableName) => { variables.add(variableName); return variableName; } ); const startOfFn = 'use strict'; let index = source.indexOf(startOfFn); if (index === -1) { return source; } index += startOfFn.length + 2; // Insert the declarations in the beginning of the function closure // to scope them to inside the runtime. let declarations = 'let '; variables.forEach(variable => { if (declarations !== 'let ') { declarations += ', '; } declarations += variable; }); declarations += ';'; source = source.slice(0, index) + declarations + source.slice(index); return source; }, }; };