You decided to contribute to this project? Great, thanks a lot for pushing it.
To check that your contributions match the project coding style make sure npm test
passes.
- yarn is required because NPM is not reliable.
- git-lfs is required (use
git lfs pull
to download files when git-lfs was installed after git clone).
To build project: yarn && yarn compile
If you get strange compilation errors, try to remove all node_modules
in the project (especially under packages/*
).
We use semantic-release, so we have very precise rules over how our git commit messages can be formatted.
The commit message formatting can be added using a typical git workflow or through the use of a CLI wizard (Commitizen).
To use the wizard, run npm run commit
in your terminal after staging your changes in git.
Each commit message consists of a header, a body and a footer. The header has a special format that includes a type, a scope and a subject:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
The header is mandatory and the scope of the header is optional.
Example — fix: remove unused dependency lodash.camelcase
Any line of the commit message cannot be longer 100 characters. This allows the message to be easier to read on GitHub as well as in various git tools.
Must be one of the following:
- feat: A new feature.
- fix: A bug fix.
- docs: Documentation only changes.
- style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc).
- refactor: A code change that neither fixes a bug nor adds a feature.
- perf: A code change that improves performance.
- test: Adding missing tests.
- chore: Changes to the build process or auxiliary tools and libraries such as documentation generation.
The scope is optional and could be anything specifying place of the commit change. For example nsis
, mac
, linux
, etc...
The subject contains succinct description of the change:
- use the imperative, present tense:
change
notchanged
norchanges
, - don't capitalize first letter,
- no dot (.) at the end.
Just as in the subject, use the imperative, present tense: "change" not "changed" nor "changes". The body should include the motivation for the change and contrast this with previous behavior.
The footer should contain any information about Breaking Changes and is also the place to reference GitHub issues that this commit Closes.
Breaking Changes should start with the word BREAKING CHANGE:
with a space or two newlines. The rest of the commit message is then used for this.
A detailed explanation can be found in this document.
Don't edit wiki directly. Instead, edit files in the /docs
.
/docs
is synced to wiki using git subtree merge when next
release is marked as latest
and available for all users.
Only IntelliJ Platform IDEs (IntelliJ IDEA, WebStorm) support debug. Please prefer to use 2017.1.
If you use IntelliJ IDEA or WebStorm 2017.1 — ij-rc-producer is used and you can run tests from an editor.
Or you can create Node.js run configuration manually:
- Ensure that
Before launch
containsCompile TypeScript
. - Set
Node interpreter
to NodeJS 7. NodeJS 7 is required to debug. - Set
Application Parameters
to-t "test name" relative-test-file-name
if you want to debug particular test. E.g.-t "extraResources - one-package" globTest.js
- Set
Environment Variables
:- Optionally,
TEST_APP_TMP_DIR
to some directory (e.g./tmp/electron-builder-test
) to inspect output if test uses temporary directory (only if--match
is used). Specified directory will be used instead of random temporary directory and cleared on each run.
- Optionally,
TEST_APP_TMP_DIR=/tmp/electron-builder-test ./node_modules/.bin/jest --env jest-environment-node-debug -t 'boring' '/oneClickInstallerTest\.\w+$'
where TEST_APP_TMP_DIR
is specified to easily inspect and use test build, boring
is the test name and /oneClickInstallerTest\.\w+$
is the path to test file.
Do not forget to execute yarn compile
before run.
When filing an issue please make sure, that you give all information needed.
This includes:
- description of what you're trying to do
- package.json
- log of the terminal output
- node version
- npm version
- on which system do you want to create installers (macOS, Linux or Windows).