👍🎉 First off, thanks for taking the time to contribute! 🎉👍
The following is a set of guidelines for contributing to svg-to-excalidraw
. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
If the Readme file wasn't enough to answer your question, feel free to join the Excalidraw's Discord (ping Nicolas Goudry or BROCHINGTON there).
But, please, don't file an issue to ask a question.
This section guides you through submitting a bug report. Following these guidelines helps maintainers and the community understand your report 📝, reproduce the behavior 💻 💻, and find related reports 🔎.
Before creating bug reports, please check this list as you might find out that you don't need to create one:
- Most importantly, check if you're using the latest version of
svg-to-excalidraw
. - Search for an already existing bug report in issues. If it already exists and the issue is still open, add a comment to the existing issue instead of opening a new one.
When you are creating a bug report, please include as many details as possible. Fill in the template, the information it asks for helps us resolve issues faster.
Note: If you find a Closed issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one.
This section guides you through submitting an enhancement suggestion, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion 📝 and find related suggestions 🔎.
Before creating enhancement suggestions, please check this list as you might find out that you don't need to create one:
- Check the Readme file. You might discover that the enhancement is already available. Most importantly, check if you're using the latest version of
svg-to-excalidraw
. - Search for an already existing feature request in issues. If it already exists and the issue is still open, add a comment to the existing issue instead of opening a new one.
When you are creating an enhancement suggestion, please include as many details as possible. Fill in the template, including the steps that you imagine you would take if the feature you're requesting existed.
Unsure where to begin contributing? You can start by looking through these beginner
and help-wanted
issues:
- Beginner issues - issues which should only require a few lines of code, and a test or two.
- Help wanted issues - issues which should be a bit more involved than
beginner
issues.
Both issue lists are sorted by total number of comments. While not perfect, number of comments is a reasonable proxy for impact a given change will have.
Please follow these steps to have your contribution considered by the maintainers:
- Follow the styleguides
- Run tests locally
- After you submit your pull request, verify that all status checks are passing
What if the status checks are failing?
If a status check is failing, and you believe that the failure is unrelated to your change, please leave a comment on the pull request explaining why you believe the failure is unrelated. A maintainer will re-run the status check for you. If we conclude that the failure was a false positive, we will take needed actions to solve the problem.
While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted.
- Use the present tense ("add this" not "added this")
- Use the imperative mood ("move cursor to..." not "moves cursor to...")
- Start the commit message with the type of change you're committing
This project uses commitlint with the conventional commit config. Git hooks are defined with husky to enforce this commit-style.
If you're not familiar with this commit-style, you can run the following convenience package script that will guide you through the process of authoring your commits:
yarn commit
All JavaScript code is linted with eslint and formatted with prettier.
- Place requires in the following order:
- Built in Node Modules (such as
path
) - Local Modules (using relative paths)
- Built in Node Modules (such as
- Place class properties in the following order:
- Class methods and properties (methods starting with
static
) - Instance methods and properties
- Class methods and properties (methods starting with
- Avoid platform-dependent code