You're going to need git
to get the project, and node
and yarn
to install dependencies and run scripts.
!!! IMPORTANT !!!
yarn
is strongly recommended
- Fork and clone the repo
- Run
yarn
in the repo directory to install dependencies (May take a while for first fresh install). - Create a branch for your PR
Tip: Keep your
master
branch 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 master
This will add the original repository as a "remote" called "upstream," Then fetch the git information from that remote, then set your local
master
branch to use the upstream master branch whenever you rungit pull
. Then you can make all of your pull request branches based on thismaster
branch. 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 dev
Alternatively, 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-dev
To package apps for the local platform:
$ yarn run package
To package apps for all platforms:
First, refer to Multi Platform Build for dependencies.
Then,
$ yarn run package-all
To 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 package
You 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.json
in the root of your project./app/package.json
insideapp
folder
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
dependencies
in./app/package.json
. - If a module is
import
ed by another module, include it independencies
in./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
devDependencies
in./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.