Hi! I’m really excited that you are interested in contributing to Vue.js. Before submitting your contribution though, please make sure to take a moment and read through the following guidelines.
- Make sure that you are using the latest version of Vue.
- Try to search for your issue, it may have already been answered or even fixed in the development branch.
- It is recommended that you make a JSFiddle to reproduce your issue. You could start with this template that already includes the latest version of Vue.
- If your issue is resolved but still open, don’t hesitate to close it. In case you found a solution by yourself, it could be helpful to explain how you fixed it.
- Checkout a topic branch from
dev
and merge back againstdev
. - Work in the
src
folder and DO NOT checkindist
in the commits. - Squash the commit if there are too many small ones.
- Follow the code style.
- Make sure the default grunt task passes. (see development setup)
- If adding new feature:
- Add accompanying test case.
- Provide convincing reason to add this feature. Ideally you should open a suggestion issue first and have it greenlighted before working on it.
- If fixing a bug:
- Provide detailed description of the bug in the PR. Live demo preferred.
- Add appropriate test coverage if applicable.
-
Follow JSDoc.
-
2 spaces indentation.
-
multiple var declarations.
-
align equal signs where appropriate.
-
Return early.
-
1 space after
function
-
1 space between arguments, but not between parens.
-
When in doubt, read the source code.
-
Break long ternary conditionals like this:
var a = superLongConditionalStatement ? 'yep' : 'nope'
You will need Node, Grunt, PhantomJS and CasperJS.
# in case you don’t already these:
# npm install -g grunt-cli phantomjs casperjs
$ npm install
To watch and auto-build dist/vue.js
during development:
$ grunt watch
To lint:
grunt jshint
To build:
$ grunt build
To test:
# if you don’t have these yet:
# npm install -g phantomjs casperjs
$ grunt test
The unit tests are written with Jasmine and run with Karma. The functional tests are written for and run with CasperJS.
If you are not using a Mac
You can modify the Gruntfile to only run Karma tests in browsers that are available on your system. Just make sure don’t check in the Gruntfile for the commit.