Skip to content

Latest commit

 

History

History
108 lines (64 loc) · 3.9 KB

CONTRIBUTING.md

File metadata and controls

108 lines (64 loc) · 3.9 KB

Contributing to sharp

Hello, thank you for your interest in helping!

Submit a new bug report

Please create a new issue containing the steps to reproduce the problem.

If you're having installation problems, please include the output of running npm install --verbose sharp.

New bugs are assigned a triage label whilst under investigation.

Submit a new feature request

If a similar request exists, it's probably fastest to add a comment to it about your requirement.

Implementation is usually straightforward if libvips already supports the feature you need.

Submit a Pull Request to fix a bug

Thank you! To prevent the problem occurring again, please add unit tests that would have failed.

Please select the master branch as the destination for your Pull Request so your fix can be included in the next minor release.

Please squash your changes into a single commit using a command like git rebase -i upstream/master.

To test C++ changes, you can compile the module using npm install and then run the tests using npm test.

Submit a Pull Request with a new feature

Please add JavaScript unit tests to cover your new feature. A test coverage report for the JavaScript code is generated in the coverage/lcov-report directory.

Where possible, the functional tests use gradient-based perceptual hashes based on dHash to compare expected vs actual images.

You deserve to add your details to the list of contributors.

Any change that modifies the existing public API should be added to the relevant work-in-progress branch for inclusion in the next major release.

Release WIP branch
v0.18.0 ridge
v0.19.0 suit

Please squash your changes into a single commit using a command like git rebase -i upstream/<wip-branch>.

Add a new public method

The API tries to be as fluent as possible. Image processing concepts follow the naming conventions from libvips and, to a lesser extent, ImageMagick.

Most methods have optional parameters and assume sensible defaults. Methods with mandatory parameters often have names like doSomethingWith(X).

Please ensure backwards compatibility where possible. Methods to modify previously default behaviour often have names like withoutOptionY() or withExtraZ().

Feel free to create a new issue to gather feedback on a potential API change.

Remove an existing public method

A method to be removed should be deprecated in the next major version then removed in the following major version.

By way of example, the bilinearInterpolation method present in v0.5.0 was deprecated in v0.6.0 and removed in v0.7.0.

Documentation

The public API is documented with JSDoc annotated comments.

These can be converted to Markdown by running:

npm run docs

Please include documentation updates in any Pull Request that modifies the public API.

Run the tests

Functional tests and static code analysis

npm test

Memory leak tests

Requires Valgrind.

npm run test-leak

Packaging tests

Tests the installation on a number of Linux-based operating systems. Requires docker.

npm run test-packaging

Finally

Please feel free to ask any questions via a new issue.

If you're unable to post details publicly, please e-mail for private, paid consulting.