re-start icon indicating copy to clipboard operation
re-start copied to clipboard

re-base

Open piranna opened this issue 6 years ago • 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 :-)

piranna avatar Nov 04 '17 11:11 piranna

That's a great idea. Working on something similar. Will share with you tomorrow probably and have your suggestions on it 😄

amoghbanta avatar Nov 04 '17 13:11 amoghbanta

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?

amoghbanta avatar Nov 04 '17 19:11 amoghbanta

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.

amoghbanta avatar Nov 04 '17 19:11 amoghbanta

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 :-)

piranna avatar Nov 04 '17 20:11 piranna

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://[email protected]/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?

piranna avatar Nov 05 '17 11:11 piranna

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.

amoghbanta avatar Nov 05 '17 12:11 amoghbanta

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() of index.windows.js uses everywhere instead of the project name as index.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 using HelloWorld 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 and redux-thunk dependencies from package.json
  • [ ] Is the package.json main field needed to be set to index.electron.js so Electron can correctly run? If not, I think it's better fo remove the entry so the default will be index.js
  • [ ] electron script is running the web version in background. I think index.electron.js script should start and finish its own webserver
  • [ ] What's the purposse of app.json file?

piranna avatar Nov 05 '17 13:11 piranna

  • [ ] 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 and devDependencies.json in builder package.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

piranna avatar Nov 05 '17 13:11 piranna

  • [ ] add eslint configuration and integrate it by default with jest (I propose default config two spaces and no semicolons :-P)

piranna avatar Nov 05 '17 13:11 piranna

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?

miguelocarvajal avatar Nov 09 '17 12:11 miguelocarvajal

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 

piranna avatar Nov 09 '17 17:11 piranna

  • [ ] babel-plugin-transform-react-remove-prop-types devDependency should be removed too, specially if it's not enabled by default.

piranna avatar Nov 09 '17 21:11 piranna

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? :-)

piranna avatar Dec 08 '17 13:12 piranna