Update readme with explanation how to use now
This commit is contained in:
parent
ca577b035f
commit
46a27825f9
100
README.md
100
README.md
|
@ -9,17 +9,21 @@ This project is a fork of [dmotz/natal](https://github.com/dmotz/natal) by Dan M
|
||||||
the goal of generating skeleton of native app for iOS and Android based on
|
the goal of generating skeleton of native app for iOS and Android based on
|
||||||
[Reagent](https://github.com/reagent-project/reagent) and [re-frame](https://github.com/Day8/re-frame).
|
[Reagent](https://github.com/reagent-project/reagent) and [re-frame](https://github.com/Day8/re-frame).
|
||||||
|
|
||||||
|
The support of figwheel is based on solution developed by [decker405/figwheel-react-native](https://github.com/decker405/figwheel-react-native)
|
||||||
|
|
||||||
Re-Natal is a simple command-line utility that automates most of the process of
|
Re-Natal is a simple command-line utility that automates most of the process of
|
||||||
setting up a React Native app running on ClojureScript with Reagent an re-frame.
|
setting up a React Native app running on ClojureScript with Reagent an re-frame.
|
||||||
|
|
||||||
It stands firmly on the shoulders of giants, specifically those of
|
|
||||||
[Mike Fikes](http://blog.fikesfarm.com) who created
|
|
||||||
[Ambly](https://github.com/omcljs/ambly) and the
|
|
||||||
[documentation](http://cljsrn.org/ambly.html)
|
|
||||||
on setting up a ClojureScript React Native app.
|
|
||||||
|
|
||||||
Generated project works in iOS and Android devices.
|
Generated project works in iOS and Android devices.
|
||||||
|
|
||||||
|
## State
|
||||||
|
- Same codebase for iOS and Android
|
||||||
|
- Figwheel used for REPL and live coding
|
||||||
|
- For Android figwheel does not work yet, but auto-compile and reload works fast
|
||||||
|
- Figwheel is only working in "Debug in Chrome" mode
|
||||||
|
- You can reload app any time, no problem.
|
||||||
|
- Compiler with optimizations :simple is
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Before getting started, make sure you have the
|
Before getting started, make sure you have the
|
||||||
|
@ -42,19 +46,46 @@ A corresponding hyphenated Clojure namespace will be created.
|
||||||
|
|
||||||
Re-Natal will create a simple skeleton based on the current
|
Re-Natal will create a simple skeleton based on the current
|
||||||
version of [Reagent](https://github.com/reagent-project/reagent) and [Day8/re-frame](https://github.com/Day8/re-frame).
|
version of [Reagent](https://github.com/reagent-project/reagent) and [Day8/re-frame](https://github.com/Day8/re-frame).
|
||||||
If all goes well your app should compile and boot in the iOS simulator.
|
If all goes well you should see printed out basic instructions how to run in iOS simulator.
|
||||||
|
|
||||||
From there you can begin an interactive workflow by starting the REPL.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cd future-app
|
$ cd future-app
|
||||||
$ re-natal repl
|
```
|
||||||
|
To run in iOS:
|
||||||
|
```
|
||||||
|
$ cd re-natal xcode
|
||||||
|
```
|
||||||
|
and then run your app from Xcode normally.
|
||||||
|
|
||||||
|
To run in Android, run your simulator first or connect device and:
|
||||||
|
```
|
||||||
|
$ react-native run-android
|
||||||
```
|
```
|
||||||
|
|
||||||
If there are no issues, the REPL should connect to the simulator automatically.
|
Initially the ClojureScript is compiled in "prod" profile, meaning `index.*.js` files
|
||||||
To manually choose which device it connects to, you can run `re-natal repl --choose`.
|
are compiled with `optimizations :simple`.
|
||||||
|
Development in such mode is not fun because of slow compilation and long reload time.
|
||||||
|
|
||||||
At the prompt, try loading your app's namespace:
|
Luckily, this can be improved by compiling with `optimizations :none` and using
|
||||||
|
figwheel (unfortunately not working in Android yet)
|
||||||
|
|
||||||
|
To start development in `optimizations :none` mode you have to start "Debug in Chrome"
|
||||||
|
in your React Native application.
|
||||||
|
|
||||||
|
Then execute commands:
|
||||||
|
```
|
||||||
|
$ re-natal use-figwheel
|
||||||
|
$ lein figwheel ios
|
||||||
|
or
|
||||||
|
$ re-natal use-reload
|
||||||
|
$ lein cljsbuild auto android
|
||||||
|
```
|
||||||
|
This will generate index.ios.js and index.android.js to make `optimizations :none` possible.
|
||||||
|
|
||||||
|
You have to reload your app,
|
||||||
|
and if you have used figwheel the REPL should come up with prompt.
|
||||||
|
|
||||||
|
At the REPL prompt, try loading your app's namespace:
|
||||||
|
|
||||||
```clojure
|
```clojure
|
||||||
(in-ns 'future-app.ios.core)
|
(in-ns 'future-app.ios.core)
|
||||||
|
@ -69,47 +100,18 @@ Try this command as an example:
|
||||||
(dispatch [:set-greeting "Hello Native World!"])
|
(dispatch [:set-greeting "Hello Native World!"])
|
||||||
```
|
```
|
||||||
|
|
||||||
When the REPL connects to the simulator it will print the location of its
|
## "Prod" build
|
||||||
compilation log. It's useful to tail it to see any errors, like so:
|
Do this with command:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ tail -f /Volumes/Ambly-81C53995/watch.log
|
$ lein prod-build
|
||||||
```
|
```
|
||||||
|
It will clean and rebuild index.ios.js and index.android.js with `optimizations :simple`
|
||||||
## Running in Android
|
After this you can reload the app exit "Debug in Chrome".
|
||||||
|
|
||||||
Connect start Android simulator or connect your device.
|
|
||||||
Close React packager window of iOS app, if running.
|
|
||||||
|
|
||||||
```
|
|
||||||
$ cd future-app
|
|
||||||
$ re-natal run-android
|
|
||||||
```
|
|
||||||
This will build and run app in Android
|
|
||||||
using [React Native](https://facebook.github.io/react-native/docs/getting-started.html#content) CLI.
|
|
||||||
|
|
||||||
To enable "live coding"
|
|
||||||
bring up the menu in Android app, go to "Dev Settings" and enable
|
|
||||||
"Auto reload on JS change"
|
|
||||||
|
|
||||||
Then run Leiningen build
|
|
||||||
```
|
|
||||||
$ lein cljsbuild auto android
|
|
||||||
```
|
|
||||||
Changes in .cljs files should be reflected in running application.
|
|
||||||
|
|
||||||
Current limitation that this will reload whole application meaning the app-db
|
|
||||||
will be restored to initial state.
|
|
||||||
|
|
||||||
The REPL in android is not available... Contributions are welcome.
|
|
||||||
|
|
||||||
## Tips
|
## Tips
|
||||||
- Having `rlwrap` installed is optional but highly recommended since it makes
|
- Having `rlwrap` installed is optional but highly recommended since it makes
|
||||||
the REPL a much nicer experience with arrow keys.
|
the REPL a much nicer experience with arrow keys.
|
||||||
|
|
||||||
- Don't press ⌘-R in the simulator; code changes should be reflected automatically.
|
|
||||||
See [this issue](https://github.com/omcljs/ambly/issues/97) in Ambly for details.
|
|
||||||
|
|
||||||
- Running multiple React Native apps at once can cause problems with the React
|
- Running multiple React Native apps at once can cause problems with the React
|
||||||
Packager so try to avoid doing so.
|
Packager so try to avoid doing so.
|
||||||
|
|
||||||
|
@ -128,7 +130,7 @@ you should open the Xcode project and run it from there to view errors.
|
||||||
|
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
As Natal is the orchestration of many individual tools, there are quite a few dependencies.
|
As Re-Natal is the orchestration of many individual tools, there are quite a few dependencies.
|
||||||
If you've previously done React Native or Clojure development, you should hopefully
|
If you've previously done React Native or Clojure development, you should hopefully
|
||||||
have most installed already. Platform dependencies are listed under their respective
|
have most installed already. Platform dependencies are listed under their respective
|
||||||
tools.
|
tools.
|
||||||
|
@ -137,8 +139,6 @@ tools.
|
||||||
- [Node.js](https://nodejs.org) `>=4.0.0`
|
- [Node.js](https://nodejs.org) `>=4.0.0`
|
||||||
- [Leiningen](http://leiningen.org) `>=2.5.3`
|
- [Leiningen](http://leiningen.org) `>=2.5.3`
|
||||||
- [Java 8](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
|
- [Java 8](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
|
||||||
- [CocoaPods](https://cocoapods.org) `>=0.38.2`
|
|
||||||
- [Ruby](https://www.ruby-lang.org) `>=2.0.0`
|
|
||||||
- [Xcode](https://developer.apple.com/xcode) (+ Command Line Tools) `>=6.3`
|
- [Xcode](https://developer.apple.com/xcode) (+ Command Line Tools) `>=6.3`
|
||||||
- [OS X](http://www.apple.com/osx) `>=10.10`
|
- [OS X](http://www.apple.com/osx) `>=10.10`
|
||||||
- [Watchman](https://facebook.github.io/watchman) `>=3.7.0`
|
- [Watchman](https://facebook.github.io/watchman) `>=3.7.0`
|
||||||
|
|
Loading…
Reference in New Issue