/
TON618OFF
/
FinalPWHTML
Обзор
Документация
Войти
/
TON618OFF
/
FinalPWHTML
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/utils/injectRefreshLoader.js
58 строк
2 KB
TON618OFF
не ну это ваще
23 июн 2024, 00:30
23 июн 2024, 00:30
e27ae20
Код
Авторство
О чём код?
const path = require('path'); /** * @callback MatchObject * @param {string} [str] * @returns {boolean} */ /** * @typedef {Object} InjectLoaderOptions * @property {MatchObject} match A function to include/exclude files to be processed. * @property {import('../../loader/types').ReactRefreshLoaderOptions} [options] Options passed to the loader. */ const resolvedLoader = require.resolve('../../loader'); const reactRefreshPath = path.dirname(require.resolve('react-refresh')); const refreshUtilsPath = path.join(__dirname, '../runtime/RefreshUtils'); /** * Injects refresh loader to all JavaScript-like and user-specified files. * @param {*} moduleData Module factory creation data. * @param {InjectLoaderOptions} injectOptions Options to alter how the loader is injected. * @returns {*} The injected module factory creation data. */ function injectRefreshLoader(moduleData, injectOptions) { const { match, options } = injectOptions; // Include and exclude user-specified files if (!match(moduleData.matchResource || moduleData.resource)) return moduleData; // Include and exclude dynamically generated modules from other loaders if (moduleData.matchResource && !match(moduleData.request)) return moduleData; // Exclude files referenced as assets if (moduleData.type.includes('asset')) return moduleData; // Check to prevent double injection if (moduleData.loaders.find(({ loader }) => loader === resolvedLoader)) return moduleData; // Skip react-refresh and the plugin's runtime utils to prevent self-referencing - // this is useful when using the plugin as a direct dependency, // or when node_modules are specified to be processed. if ( moduleData.resource.includes(reactRefreshPath) || moduleData.resource.includes(refreshUtilsPath) ) { return moduleData; } // As we inject runtime code for each module, // it is important to run the injected loader after everything. // This way we can ensure that all code-processing have been done, // and we won't risk breaking tools like Flow or ESLint. moduleData.loaders.unshift({ loader: resolvedLoader, options, }); return moduleData; } module.exports = injectRefreshLoader;