You're going to need git to get the project, and node and yarn to install dependencies and run scripts.
!!! IMPORTANT !!!
yarnis strongly recommended
- Fork and clone the repo
- Run
yarnin the repo directory to install dependencies (May take a while for first fresh install). - Create a branch for your PR
Tip: Keep your
masterbranch pointing at the original repository and make pull requests from branches on your fork. To do this, run:git remote add upstream https://github.com/sambegin/Firesteer.git git fetch upstream git branch --set-upstream-to=upstream/master masterThis will add the original repository as a "remote" called "upstream," Then fetch the git information from that remote, then set your local
masterbranch to use the upstream master branch whenever you rungit pull. Then you can make all of your pull request branches based on thismasterbranch. Whenever you want to update your version ofmaster, do a regulargit pull.
Start the app in the dev environment. This starts the renderer process in hot-module-replacement mode and starts a webpack dev server that sends hot updates to the renderer process:
$ yarn run devAlternatively, you can run the renderer and main processes separately. This way, you can restart one process without waiting for the other. Run these two commands simultaneously in different console tabs:
$ yarn run start-renderer-dev
$ yarn run start-main-devTo package apps for the local platform:
$ yarn run packageTo package apps for all platforms:
First, refer to Multi Platform Build for dependencies.
Then,
$ yarn run package-allTo package apps with options:
$ yarn run package -- --[option]To run End-to-End Test
$ yarn run build
$ yarn run test-e2e💡 You can debug your production build with devtools by simply setting the DEBUG_PROD env variable:
DEBUG_PROD=true npm run packageYou will need to add other modules to this boilerplate, depending on the requirements of your project. For example, you may want to add node-postgres to communicate with PostgreSQL database, or material-ui to reuse react UI components.
This boilerplate uses a two package.json structure. This means, you will have two package.json files.
./package.jsonin the root of your project./app/package.jsoninsideappfolder
Rule of thumb is: all modules go into ./package.json except native modules. Native modules go into ./app/package.json.
- If the module is native to a platform (like firebase-admin) or otherwise should be included with the published package (i.e. bcrypt, openbci), it should be listed under
dependenciesin./app/package.json. - If a module is
imported by another module, include it independenciesin./package.json. See this ESLint rule. Examples of such modules arematerial-ui,redux-form, andmoment. - Otherwise, modules used for building, testing and debugging should be included in
devDependenciesin./package.json.
See the wiki page, Module Structure — Two package.json Structure to understand what is native module, the rationale behind two package.json structure and more.
For an example app that uses this boilerplate and packages native dependencies, see erb-sqlite-example.