3.9 KiB
How to Contribute
The best way to get started is to read through the Getting Started
and Example
sections before having a look through the open issues.
Some of the issues are marked as good first bug
, but feel free to contribute to
any of the issues there, or open a new one if the thing you want to work on isn't
there yet. If you would like to have an issue assigned to you, please send me a
message and I'll update it.
Setup
The Filer build system is based on grunt. To get a working build system do the following:
npm install
npm install -g grunt-cli
You can now run the following grunt tasks:
grunt check
will run JSHint on your code (do this before submitting a pull request) to catch errorsgrunt develop
will create a single file version of the library for testing indist/idbfs.js
grunt release
likedevelop
but will also create a minified version of the library indist/idbfs.min.js
grunt test
will run JSHint on your code and the test suite in PhantomJS
Once you've done some hacking and you'd like to have your work merged, you'll need to
make a pull request. If you're patch includes code, make sure to check that all the
unit tests pass, including any new tests you wrote. Finally, make sure you add yourself
to the AUTHORS
file.
=======
Releasing a new version
=======
Releasing a new version
NOTE: This step should only ever be attempted by the owner of the repo (@modeswitch).
grunt publish
will:
- Run the
grunt release
task - Bump
bower.json
&package.json
version numbers according to a Semver compatible scheme (see "How to Publish" below) - Create a git tag at the new version number
- Create a release commit including
dist/filer.js
,dist/filer.min.js
,bower.json
andpackage.json
- Push tag & commit to
origin/develop
- Update the
gh-pages
branch with the contents of thedevelop
branch - Force push the
gh-pages
branch toorigin/gh-pages
- Publish the new version of the module to NPM
How to configure
- Copy
env.sample
to.env
- Modify as needed, or leave alone for defaults
How to Publish
grunt publish
can be run in four ways:
grunt publish
- does a patch (x.x.X) bumpgrunt publish:patch
- also does a patch (x.x.X) bumpgrunt publish:minor
- does a minor (x.X.x) bumpgrunt publish:major
- does a major (X.x.x) bump
The user must be on their local develop
branch before running any form of grunt publish
, or else the task will fail loudly.
=======
Tests
Tests are writting using Mocha and Chai.
You can run the tests in your browser by opening the tests
directory. You can also run them
here.
There are a number of configurable options for the test suite, which are set via query string params. First, you can choose which filer source to use (i.e., src/, dist/filer.js or dist/filer.min.js). The default is to use what is in /src, and you can switch to built versions like so:
- tests/index.html?filer-dist/filer.js
- tests/index.html?filer-dist/filer.min.js
Second, you can specify which provider to use for all non-provider specific tests (i.e., most of the tests).
The default provider is Memory
, and you can switch it like so:
- tests/index.html?filer-provider=memory
- tests/index.html?filer-provider=indexeddb
- tests/index.html?filer-provider=websql
If you're writing tests, make sure you write them in the same style as existing tests, which are
provider agnostic. See tests/lib/test-utils.js
and how it gets used in various tests as
an example.
Communication
If you'd like to talk to someone about the project, you can reach us on irc.mozilla.org in the #filer or #mofodev channel. Look for "ack" or "humph".