Contributing
Welcome!
Bug fixes, features, docs, marketing, and issue support are all contributions. We love it when people help out and are more than willing to give you advice, guidance, or just be a 🐥 debugger for you.
Global Dependencies
If you're reading this, you are probably interested in pitching in from a code point of view.
gluegun
is powered by Node (7.6 or above). Install Node using brew
(if on macOS) or by following the instructions here: https://nodejs.org/en/download/current/
Also install yarn: brew install yarn
or https://yarnpkg.com.
Installing gluegun
Next, fork the repo on Github and clone down your repo.
git clone git@github.com/<yourusername>/gluegun
Install all the dependencies.
cd gluegun
yarn
Gluegun's source files are mostly in ./src
and are written in TypeScript. Documentation lives in /docs
.
Running Tests And Linting
On macOS or Linux:
yarn test
yarn lint
yarn watch
yarn integration
On windows:
yarn lint
yarn windows:test
Features & Fixes
git branch feature/fun
# furious typing
yarn test
yarn lint
git commit -m "Adds fun"
git push -u origin --HEAD
Passing tests and linting is required before we'll merge a pull request. If you need help with this, feel free to file an issue or chat with us on the Infinite Red Community Slack.
Submitting a Pull Request
Jump on Github on your fork. Switch to the branch with your new changes, and
open a PR against master
of infinitered/gluegun.
Screenshots of what the feature is 💯. Animated gifs (suggested apps: licecap, Gif Brewery, or Kap) are 💯 + 🦄.
Then submit the pull request.
- It's okay to submit an issue before breaking changes or shenanigans to get a sense if it's cool
- It's okay to submit PRs to start a discussion - just mark it 🚨🚨🚨 (or whatever) to let us know it's a conversation
- It's okay to submit changes to PRs not yet merged, just make sure it's related to the PR
- If Github is complaining about conflicts, rebase downstream, merge upstream
Keeping up to date
You want your fork's master
to be the same as gluegun/master
.
# just once, run this to track our repo as `upstream`
git remote add upstream https://github.com/infinitered/gluegun.git
# then when you need to update
git checkout master
git pull upstream
# if on your own branch
git checkout <your branch>
git merge master
# and here's where you'd create your branch
git checkout -b feature/mybranch