/
githubmr
/
facebook-react-native
Обзор
Документация
Войти
/
githubmr
/
facebook-react-native
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
packages/community-cli-plugin/src/commands/bundle/createKeepFileAsync.js
39 строк
1 KB
Rob Hogan
Update Metro imports to use package root exports (#51261)
26 май 2025, 14:54
26 май 2025, 14:54
8ad43da
Код
Авторство
О чём код?
/** * 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. * * @flow strict-local * @format */ import type {AssetData} from 'metro'; import assetPathUtils from './assetPathUtils'; import fs from 'fs'; import path from 'path'; async function createKeepFileAsync( assets: $ReadOnlyArray<AssetData>, outputDirectory: string, ): Promise<void> { if (!assets.length) { return; } const assetsList = []; for (const asset of assets) { const prefix = assetPathUtils.drawableFileTypes.has(asset.type) ? 'drawable' : 'raw'; assetsList.push( `@${prefix}/${assetPathUtils.getResourceIdentifier(asset)}`, ); } const keepPath = path.join(outputDirectory, 'raw/keep.xml'); const content = `<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="${assetsList.join(',')}" />\n`; await fs.promises.mkdir(path.dirname(keepPath), {recursive: true}); await fs.promises.writeFile(keepPath, content); } export default createKeepFileAsync;