Skip to content

Latest commit

 

History

History
121 lines (79 loc) · 6.91 KB

CONTRIBUTING.md

File metadata and controls

121 lines (79 loc) · 6.91 KB

Contributing to Fabric

Questions?!?

To get your questions answered, please ask/search on Fabric's google group, StackOverflow or on Fabric's IRC channel (irc://irc.freenode.net/#fabric.js). Please do not open an issue if you're not sure it's a bug or if it's not a feature/suggestion.

For news about Fabric you can follow @fabric.js, @AndreaBogazzi, @kangax, or @kienzle_s on Twitter. Demos and examples can be found on jsfiddle, codepen.io and fabricjs.com.

Issue tracker

If you are sure that it's a bug in Fabric.js or a suggestion, open a new issue and try to answer the following questions:

  • What did you do?
  • What did you expect to happen?
  • What happened instead?

Issue tracker guidelines

If you think you found a bug in Fabric file an issue.

  • Gotchas: Make sure you didn't fall into a known fabric-gotcha

  • Search: Before opening a new issue please take the time to search Fabric's existing issues. This is vital to prevent spamming and to keep the community in a good state.

  • Title: Choose an informative title.

  • Description: Use the questions above to describe the issue. Add logs, screenshots or videos if that makes sense.

  • Test case: Make sure you create a minimal and immediate test case, demonstrating the bug, with relevant explanations. It should be extremely easy and fast for someone to understand your bug and reproduce it. Bug templates can be found within a bug report

  • Fabric.js version: Make sure to specify which version of Fabric.js you are using. The version can be found in fabric.js file or just by executing fabric.version in the browser console. It is advised you upgrade to the latest version before proceeding.

Without these requirements issues shall be closed.

If you're unsure about something that is not a bug, it's best to start a discussion or create a post on Fabric's google group where someone might clarify some of the things.

Pull requests

We are very grateful for your pull requests! This is your chance to improve Fabric for everyone else. Before you begin read this through and take a look at fabric-gotchas

Online one-click setup for making PRs

Contribute to fabricjs using a fully featured online development environment that will automatically with a single click: clone the repo and install the dependencies.

Open in Gitpod

Setting up a local environment

  1. Clone your fork of fabric.js to your machine
  2. Install dependencies: npm i

You can decide how you prefer to work:

fabricjs.com

You can start the dev server that runs fabric's website and test live changes. After setting up fabricjs.com on your machine run npm start from the fabric.js folder. This will start the dev server and watch for changes in both repositories. While working, you might need to refresh the page for changes to take place. See Working on fabricjs.com. To customize the dev server take a look at ./scripts.

symlinking

You can symlink fabric.js and test your changes in a separate project.

  1. From fabric.js folder run npm link OR yarn link.
  2. From your project's folder run npm link fabric OR yarn link fabric.

See npm link OR yarn link.
Don't forget to unlink the package once you're done.

Working on fabricjs.com

To develop fabric's site you need to clone fabricjs.com in the same parent folder of fabric.js, so that fabric.js and fabricjs.com are siblings. To start the dev server run npm start:dev inside the fabricjs.com directory (after installing dependecies). If you are working on windows, check out jekyll docs for futher instructions.

Adding a DEMO: Take a look at an existing demo file. Create a new file in the same directory (posts/demos/_posts) and you're good to go.

Tests

Fabric has 2 test suites:

  • unit testing logic and state
  • visual testing visual outcome against image refs

Running Tests

  • Node.js: run npm test -- -a -d to run all tests in debug mode (pass --help to see more options).
  • Browser: start fabricjs.com (npm start) and navigate to the tests tab where you will find the test interface.

Pull request guidelines

Here are a few notes you should take into account:

  • Code style, notes: Make sure you have complied with the guidelines

  • Distribution files: Do your changes only in the source files. Don't include the distribution files in your commit.

  • Add tests: Tests are vital - invest time to extend the tests suites. More information about QUnit tests can be found in the wiki.

  • Add documentation: Fabric uses JSDoc 3 for documentation. The generated documentation can be found at fabricjs.com.

  • Create topic branches. Don't use your master branch for pull request. It's better to create a new branch for every pull request.

  • One pull request per feature/bug. If you want to do more than one thing, send multiple pull requests.

  • And there you go! If you still have questions we're always happy to help. Also feel free to consult wiki.