UNPKG

@fto-consult/expo-ui

Version:

Bibliothèque de composants UI Expo,react-native

44 lines (41 loc) • 1.66 kB
const path = require("path"); const fs = require("fs"); module.exports = function(api,opts) { opts = typeof opts =='object' && opts ? opts : {}; const platform = api.caller(caller => caller && caller.platform); const isWeb = platform === 'web'; const options = {...opts,isWeb,isAndroid:platform==="android",isIos : platform==="ios",platform:"expo"}; options.projectRoot = typeof options.projectRoot == 'string' && fs.existsSync(path.resolve(options.projectRoot)) ? path.resolve(options.projectRoot) : process.cwd(); const alias = require("./babel.config.alias")(options); if(typeof options.aliasMutator =="function"){ options.aliasMutator({...options,alias}); } const plugins = (Array.isArray(opts.plugins) ? options.plugins : []); let reanimated = "react-native-reanimated/plugin"; const filteredPlugins = plugins.filter((p)=>{ if(p === reanimated || Array.isArray(p) && p[0] === reanimated){ reanimated = p; return false; } return true; }); const inlineDovOptions = { unsafe: true}; const environmentPath = require("./copy-env-file")(options.projectRoot); if(environmentPath && fs.existsSync(environmentPath)){ inlineDovOptions.path = environmentPath; } require("@fto-consult/common/bin/generate-jsonconfig")({...opts,alias}); return { presets: [ ...filteredPlugins, ['babel-preset-expo'], ], plugins : [ ...plugins, ["inline-dotenv",inlineDovOptions], ["module-resolver", {"alias": alias}], "@babel/plugin-proposal-export-namespace-from", ...(reanimated?[reanimated]:[]), ], }; };