mattermost-desktop/docs/development.md
2016-09-25 19:45:52 +09:00

100 lines
2.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Mattermost Desktop Development Guides
## Build instructions
### Prerequisites
- C++ environment which supports C++11 (e.g. VS 2015, Xcode, GCC)
- Python 2.7
- Node.js 4.2.0 or later
- Git
### Installing dependencies
`npm install` is executed twice to install dependencies of `src/` directory.
```
$ npm install
```
### Building
Build JavaScript codes with `webpack`, and copy other assets into `dist/` directory.
```
$ npm run build
```
After building is done, you can execute the application with `npm start`.
### Tests
Execute automated tests.
```
$ npm test
```
There are two steps in `npm test`.
Test functionality:
```
$ npm run test:app
```
Test coding style:
```
$ npm run test:code
```
### Helper commmands
#### `npm run watch`
Reload the application automatically when you have saved source codes.
#### `mpm run prettify`
Format the source codes to pass `npm test`.
#### `npm run package`
You can package this application with following commands. Packages will be created in `release/` directory.
```
$ npm run package (for your platform)
$ npm run package:windows (Requires Windows or Wine)
$ npm run package:osx (Requires macOS or Linux)
$ npm run package:linux
$ npm run package:all (Packages for all platform)
```
Create a windows installer with the following command. It will appear in the `release\windows-installer` directory.
```
$ npm run installer
```
## Directory Structure
```
Mattermost Desktop
├── docs/ - Documentations.
├── resources/ - Resources which are used outside of the application codes.
├── scripts/ - Helper scripts.
├── src/ - Application source code.
│   ├── browser/ - Implemtation of Electron's renderer process.
│   │   ├── components/ - React.js components.
│   │   ├── css/ - Stylesheets.
│   │   ├── js/ - Helper JavaScript modules.
│   │   └── webview/ - Injection code for Electron's <webview> tag.
│   ├── common/ - Common JavaScript modules for both Electron's processes.
│   ├── main/ - Implemtation of Electron's main process.
│   │   └── menus/ - Application menu.
│   └── resources/ - Resources which are loaded from the application codes.
└── test/ - Automated tests.
   ├── modules/ - Scripts which are commonly used in tests.
   └── specs/ - Test scripts.
```
### Other directories
- **dist/** - Built application code and asset.
- **node_modules/** - Third party Node.js modules to build the application.
- **release/** - Packaged distributable applications.
- **src/node_modules/** - Third party Node.js modules to use in the application.