React Nativeで作成したアプリをWebブラウザで開ける②

まず、Expoを利用して、React Navigationを使った簡単なアプリを作成しました。

 

(プロジェクト名)/App.js

import { StatusBar } from 'expo-status-bar';
import { StyleSheet, Text, View, Button } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';

function HomeScreen({navigation}){
  return(
    <View>
      <Text>HomeScreen</Text>
      <Button
         title="PUSH"
         onPress={() => navigation.navigate("NextScreen")}/>
    </View>
  )
}

function NextScreen(){
  return(
    <View>
      <Text>NextScreen</Text>
    </View>
  )
}

const Stack = createStackNavigator();

export default function App() {
 
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen component={HomeScreen} name="HomeScreen"/>
        <Stack.Screen component={NextScreen} name="NextScreen"/>
      </Stack.Navigator>
    </NavigationContainer>
   
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

npx expo startで、Expo Goで問題なく動くか確認しました。

その次に、

npm expo install react-dom react-native-web @expo/webpack-config

を行いました。

そして、npx expo startを行い、説明に従い、『w』でWebブラウザで開くことができました。

ここからは、

https://docs.expo.dev/workflow/web/

https://docs.expo.dev/distribution/publishing-websites/(Firebase HostingやGitHub Pagesへ挙げる方法) を参考にしてます。

npx expo export:web

npx serve web-build --single

とし、ローカルサーバで立ち上がるか確認しました。

Firebase Hostingを行います。

npm install -g firebase-tools  としたのちに、

firebase login とし、

firebase init としました。Firebase内でプロジェクトを作成しておき、その中に、Hosting を使えるようにしておき、そのページはWebブラウザで開いておきます。

そして、

npx expo export:web としました。

 

firebase.jsonは下記のように修正しました。[①の部分はデフォルトでは、"public": "public"ですが下記にように修正]

{
  "hosting": {
    "public": "web-build", ・・・①
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

最後に、firebase deploy --only hostingとすると、よいようです。

https://demo2-5a543.web.app

のようなURLが発行されますので、それをクリックするとアプリが使えるようになります。

 

これをスマホで開くと、当然Webブラウザか何かで開かれ、メニューで『ホーム画面に追加』とすると、アプリの並びの列にアイコンが追加されました。