re-base
piranna opened this issue ยท 13 comments
Now that we are going to have support for React16 and usage of react-scripts
, I think it would be a good moment to modularize and stabilice the project.
My propose is to create a re-base
project that's a streamlined version of re-start
, that only has the barebones to do a multi-platform project. No redux
, no redux-router
, nothing: just only the react-native
dependencies for each platform and the scripts to generate the different versions. Later, re-start
would depend on this re-core
project and still offer the current basic template. This would allow people to create their own templates that fit best to their workflows, for example I would do one that includes react-native-material-ui
and redux-offline
already configured :-)
That's a great idea. Working on something similar. Will share with you tomorrow probably and have your suggestions on it ๐
hey @piranna, check this out.
re-base will be the base template (what you wanted to do with re-core), based on which we can create more templates with different permutations and combinations of opinions and libraries and bootstrap any new project with a template that best fits the requirements.
So re-start will be a collection of opinionated templates that work on all available platforms.
Next step would be to create a CLI, such that we can mix and match different templates at the time of bootstrapping a project because more the number of templates, difficult it would be to maintain this project.
cc: @ankitpopli1891, what are your views on this?
It would be great if you could test a couple of templates:
react-native init projectName --template re-start/re-base
cd projectName
node scripts/additionalDependencies.js
its still a work in progress, and I'll be working on rest of the templates tomorrow.
re-base will be the base template
Honestly, the joke with the names starting with re-
is going out of our hands... X-D Anyway, it needs some clean-ups, but it's exactly what I was talking about, good job :-)
It fails to install :-(
Fetching template react-native-template-re-start/re-base...
npm ERR! Error while executing:
npm ERR! /usr/bin/git ls-remote -h -t ssh://git@github.com/react-native-template-re-start/re-base.git
npm ERR!
npm ERR! ERROR: Repository not found.
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
npm ERR!
npm ERR! exited with error code: 128
Wouldn't it be better to move re-base
to it's own project?
re-base and re-start are 2 different templates. You have to select one.
Try out:
react-native init projectName --template re-start
cd projectName
node scripts/additionalDependencies.js
or
react-native init projectName --template re-base
cd projectName
node scripts/additionalDependencies.js
re-base and re-start are totally isolated projects. They are just managed in a single repository.
Something like react-router does with the help of lerna.
react-native init projectName --template re-base
cd projectName
node scripts/additionalDependencies.js
Ok, it worked :-)
Issues:
-
package.json
gets minified in a single line instead of being indented and formatted. -
registerComponent()
ofindex.windows.js
useseverywhere
instead of the project name asindex.js
does - port of Electron app is hardcoded to
3000
that could be being used for other process, use a random port (port zero and fetch the actual one being use). - title of HTML page is hard-coded to
re-start
instead of the project name. I think I've read by usingHelloWorld
it automatically gets replaced when using a template - What's the purposse of
/src/index.js
? So far it seems useless to me having/index.js
... - move
scripts/additionalDependencies.js
to an independent project as requested at #40 - remove
react-redux
,react-router
,react-router-dom
,react-router-native
,redux
andredux-thunk
dependencies frompackage.json
- Is the
package.json
main
field needed to be set toindex.electron.js
so Electron can correctly run? If not, I think it's better fo remove the entry so the default will beindex.js
-
electron
script is running the web version in background. I thinkindex.electron.js
script should start and finish its own webserver - What's the purposse of
app.json
file?
- dependencies versions are hardcoded instead of setted by ranges. Don't know if this is on purposse to be sure they are compatible between them...
- integrate
dependencies.json
anddevDependencies.json
in builderpackage.json
by using https://github.com/piranna/buildDependencies - add simple test to just generate the bundles for each platform and be sure they are working
- add TravisCI support
- add support for https://greenkeeper.io/ powered by TravisCI and the tests so dependencies can be up to date
- add
eslint
configuration and integrate it by default withjest
(I propose default config two spaces and no semicolons :-P)
I like where this is going. I will be testing this out myself in the following days.
I wanted to see if it would be possible to set this up with Expo as well (so that yarn run web works but mobile side uses Expo). Has anybody done any testing with it?
Dependencies got upgraded:
react 16.0.0 โ 16.1.0
react-dom 16.0.0 โ 16.1.0
react-native 0.50.1 โ 0.50.3
react-test-renderer 16.0.0 โ 16.1.0
electron ^1.6.11 โ ^1.7.9
react-scripts ^1.0.14 โ ^1.0.17
-
babel-plugin-transform-react-remove-prop-types
devDependency should be removed too, specially if it's not enabled by default.
Hi @amoghbanta, hope you are well. How is this going on? Is it ready to merge in master
? I could be able to do myself the proposed changes but I was waiting to the branch getting merged first before doing so... I know I have permissions on this repo, but being your repo I think this kind of decission are better done by you, specially since you have the publish permissions on npm
. What about doing an org there and put some of us with publish permissions? Adding us to this org would be a good idea, this would allow to maintain the project and do some improvements, like moving re-base
and the other templates to independent projects and use them as dependencies or add TravisCI support and add tests, what do you think? :-)