This guide will tell you how you can and should contribute to JokeAPI.
Not following it might cause me to reject your changes but at the very least we will both lose time.
So please read this guide before contributing. Thanks :)
- Submitting or editing jokes
- Contributing to JokeAPI's code
- Submitting a translation
- Tips and Tricks for contributing
To submit a joke manually, you can use the form on this page.
To submit it through code, you can make use of the "submit" endpoint.
If you instead want to edit a joke yourself, you can find them in the jokes-xy.json
files in data/jokes/
To submit your changes, create a pull request. Also make sure to follow the code contribution instructions.
If you want a joke to be edited or deleted, please submit a new issue here.
Keep in mind, though, that I will not remove jokes based on opinions as that would defeat the API's main purpose, to provide jokes for everyone's taste.
- Read the Code_of_Conduct.md file (TLDR: just behave in a friendly manner).
- Click here to fork the repository. Afterwards, clone or download it and locate the folder where it is contained.
- Make the changes you want to make to the code.
- Run the script
npm run all
which will run these commands:npm run validate-jokes
to make sure all jokes are formatted correctly.npm run validate-ids
to verify that all jokes have the correct ID.npm run lint
to check the code for any warnings or errors.npm run dep-graph
to generate a new dependency graph.npm run generate-changelog
to generate a Markdown changelog out of the plaintext one.npm run test
, which runs the unit tests for JokeAPI. If you are colorblind, you can run the commandnpm run test-colorblind
(will turn green into cyan and red into magenta).
- Run JokeAPI locally by running the command
node JokeAPI
, request some jokes and test the areas you modified / added to make sure everything still works. - Add yourself to the
contributors
object in thepackage.json
file :) - Submit a pull request on your forked repository, selecting
Sv443/JokeAPI
as the base repo andmaster
as the base branch and selectingYourUsername/JokeAPI
as the head repo andYourBranch
as the compare branch- If your pull request is not ready to be merged yet, you can add
[WIP]
to the beginning of the title which will tell the repo maintainer(s) and automated scripts not to merge it yet.
- If your pull request is not ready to be merged yet, you can add
- Request a review from me (Sv443).
- Check if the CI script and other checks for your pull request were successful (they can be found below the comments).
- If they were unsuccessful: view the log, fix the errors, commit the code and push to the same branch. This will automatically update your pull request and re-run the checks.
- Once the pull request is approved and merged, you can delete the source branch and your forked repo if you want to.
- If it isn't, please read the comments from the reviewer(s) and make the necessary changes.
If you want to submit a translation, please follow these steps:
- Find your language's two-character code in the file
data/languages.json
. You'll need to specify it for every translation. - Translate coded error messages in the file
data/errorMessages.js
by following the style of the other translations. - Translate the generic strings inside of the file
data/translations.json
by also following the style of the other translations. - Add yourself to the
contributors
object in thepackage.json
file :)
- I really recommend using Visual Studio Code with the extension
fabiospampinato.vscode-highlight
- it will add custom styling to the syntax highlighting in the editor and make the code easier to read and work with. - If you want to generate a dependency graph, you need to install Graphviz and add the path to the
bin
folder to your%PATH%
/$PATH
environment vaiable. Then, run the commandnpm run dependency-graph
and open the filedev/dependency-graph.html
in a browser. - If you need to add an authorization token, you can generate one or multiple tokens with the command
npm run add-token [amount]
. If you omit the "amount" parameter, the script will generate a single token. After you run the command, the tokens will be listed in the console and you can now (after restarting JokeAPI) use it in theAuthorization
header to gain unlimited access to JokeAPI (better explanation here).