Установка
- Install expo app - Expo install
- Expo docs - Expo docs.
Установка на Mac OS
Предоставление прав доступа
brew install watchman- установка watchman + нужно предоставить права доступа для watchmansudo chown -R 501:20 "/Users/evgenyleukhin/.npm"- возможно потребуются дать права доступа к ~/.npmsudo chown -R 501:20 "/Users/evgenyleukhin/.expo"- возможно потребуются дать права доступа к ~/.expo
Базовая сборка (create-expo-app)
Пакет create-expo-app установиться через npx автоматически, если его нет.
npx create-expo-app@latest your-app-name- установка сборки React Native (в процессе установки могут всплывать окна о предоставлении прав доступа, нужно предоставить права)
Java для Android
- Install Java for Android:
brew install --cask zulu@17 - Get path to where cask was installed to double-click installer:
brew info --cask zulu@17
Возможные проблемы
sudo ...- возможно потребуются права суперпользователя- Предо ставить права watchman (появиться в окне при первом запуске)
- Предоставить права терминалу открывать браузер (появиться в окне при первом запуске)
- Приложение watchman: Основные --> Объекты ввода --> Watchman --> On
TypeScript
npx create-expo-app@latest -t expo-template-blank-typescript- ... c TypeScript - не работает hot-reload- Кастомизация конфига TypeScript:
npx expo customize tsconfig.json - Создать файл-декоратор:
app.d.ts
Поддержка web
Чтобы можно было запускать и разрабатывать веб-версию в браузере.
Нужно доустановить пакеты для web: npx expo install react-native-web react-dom @expo/metro-runtime
Tailwind CSS
yarn add nativewind- установка nativewind (чтобы транспайлер понимал синтаксис и компилировал его)yarn add -D tailwindcss- установка tailwindcssnpx tailwind init-->tailwind.config.js- конфиг
babel.config.js
module.exports = function (api) {
api.cache(true);
return {
presets: ['babel-preset-expo'],
plugins: ['nativewind/babel'],
};
};
tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ['./App.{js,jsx,ts,tsx}', './app/**/*.{js,jsx,ts,tsx}'],
theme: {
extend: {},
},
plugins: [],
};
Что делает tailwindcss - упрощение в написании css классов.
import { StatusBar } from 'expo-status-bar';
import React from 'react';
- import { StyleSheet, Text, View } from 'react-native';
+ import { Text, View } from 'react-native';
export default function App() {
return (
- <View style={styles.container}>
+ <View className="flex-1 items-center justify-center bg-white">
<Text>Open up App.js to start working on your app!</Text>
<StatusBar style="auto" />
</View>
);
}
- const styles = StyleSheet.create({
- container: {
- flex: 1,
- backgroundColor: '#fff',
- alignItems: 'center',
- justifyContent: 'center',
- },
- });
Старые варианты установок (сейчас уже deprecated)
Может потребоваться для разворачивания старых проектов.
1 вариант: Запуск dev-сборки с помощью Expo Go Quickstart
Нельзя интегрировать нативный код
# with npm
npx create-expo-app AwesomeProject
cd AwesomeProject
npx expo start
# with yarn
yarn create expo-app AwesomeProject
cd AwesomeProject
yarn expo start