UNPKG

react-native-asset

Version:

Linking and unlinking of assets in your react-native app, works for fonts and sounds

73 lines (72 loc) 2.65 kB
import * as dntShim from "./_dnt.shims.js"; import * as path from "./deps/jsr.io/@std/path/1.1.4/mod.js"; import { parseArgs } from "./deps/jsr.io/@std/cli/1.0.29/parse_args.js"; import { linkAssets } from "./main.js"; import { pathToFileURL } from "node:url"; export const runCli = async () => { const args = await parseArgs(dntShim.Deno.args, { alias: { a: "assets", "ios-a": "ios-assets", "android-a": "android-assets", p: "path", "n-u": "no-unlink", }, collect: ["assets", "ios-assets", "android-assets"], string: ["assets", "ios-assets", "android-assets", "path"], boolean: ["no-unlink"], default: { path: dntShim.Deno.cwd(), noUnlink: false, }, }); const reactNativeConfigPath = path.join(args.path, `react-native.config.js`); let reactNativeConfigExists = false; try { const _ = await dntShim.Deno.lstat(reactNativeConfigPath); reactNativeConfigExists = true; } catch (err) { if (!(err instanceof dntShim.Deno.errors.NotFound)) { throw err; } } const reactNativeConfig = reactNativeConfigExists ? (await import(pathToFileURL(reactNativeConfigPath).href)).default : {}; const filteredAssets = args.assets.filter(Boolean); const filteredIosAssets = args["ios-assets"].filter(Boolean); const filteredAndroidAssets = args["android-assets"].filter(Boolean); const merged = { assets: filteredAssets.length !== 0 ? filteredAssets : (reactNativeConfig.assets ?? undefined), iosAssets: filteredIosAssets.length !== 0 ? filteredIosAssets : (reactNativeConfig.iosAssets ?? undefined), androidAssets: filteredAndroidAssets.length !== 0 ? filteredAndroidAssets : (reactNativeConfig.androidAssets ?? undefined), }; await linkAssets({ rootPath: args.path, shouldUnlink: !args.noUnlink, platforms: { ios: { enabled: merged.assets !== undefined || merged.iosAssets !== undefined, assets: [ ...(merged.iosAssets ?? []), ...(merged.assets ?? []), ], }, android: { enabled: merged.assets !== undefined || merged.androidAssets !== undefined, assets: [ ...(merged.androidAssets ?? []), ...(merged.assets ?? []), ], }, }, }); };