CONTRIBUTING.md 6.7 KB
Newer Older
1
# Contribute to Strapi
2

3
Strapi is an open-source project administered by [the Strapi team](https://strapi.io/company). We appreciate your interest and efforts to contribute to Strapi.
4

5
All efforts to contribute are highly appreciated, we recommend you talk to a maintainer prior to spending a lot of time making a pull request that may not align with the project roadmap.
6

7
## Open Development & Community Driven
S
soupette 已提交
8

C
cyril lopez 已提交
9
Strapi is open-source under the [MIT license](https://github.com/strapi/strapi/blob/master/LICENSE.md). All the work done is available on GitHub.
10

C
cyril lopez 已提交
11 12
The core team and the contributors send pull requests which go through the same validation process.

13 14 15
## Feature Requests

Feature Requests by the community are highly encouraged. Please feel free to submit a [feature request](https://portal.productboard.com/strapi) or to upvote 👍 [an existing feature request](https://portal.productboard.com/strapi) in the ProductBoard.
C
cyril lopez 已提交
16

S
soupette 已提交
17
## Code of Conduct
C
cyril lopez 已提交
18

19
This project and everyone participating in it are governed by the [Strapi Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please read the [full text](CODE_OF_CONDUCT.md) so that you can read which actions may or may not be tolerated.
C
cyril lopez 已提交
20

S
soupette 已提交
21
## Bugs
C
cyril lopez 已提交
22

23
We are using [GitHub Issues](https://github.com/strapi/strapi/issues) to manage our public bugs. We keep a close eye on this so before filing a new issue, try to make sure the problem does not already exist.
C
cyril lopez 已提交
24

S
soupette 已提交
25
## Get in Touch
C
cyril lopez 已提交
26

27
- [Email](mailto:hi@strapi.io)
S
soupette 已提交
28 29
- [Slack](https://slack.strapi.io/)
- [Spectrum](https://spectrum.chat/strapi?tab=posts)
C
cyril lopez 已提交
30

S
soupette 已提交
31
---
N
Nick Verwymeren 已提交
32

S
soupette 已提交
33
## Before Submitting a Pull Request
C
cyril lopez 已提交
34

S
soupette 已提交
35
The core team will review your pull request and will either merge it, request changes to it, or close it.
C
cyril lopez 已提交
36

S
soupette 已提交
37
**Before submitting your pull request** make sure the following requirements are fulfilled:
C
cyril lopez 已提交
38

S
soupette 已提交
39 40
- Fork the repository and create your branch from `master`.
- Run `yarn setup` in the repository root.
41 42
- If you’ve fixed a bug or added code that should be tested, add the tests and then link the corresponding issue in either your commit or your PR!
- Ensure the test suites are passing:
S
soupette 已提交
43 44 45
  - `yarn test:unit`
  - `yarn test:front`
- Make sure your code lints (`yarn lint`).
J
Jim Laurie 已提交
46

S
soupette 已提交
47
## Contribution Prerequisites
J
Jim Laurie 已提交
48

A
Alexandre BODIN 已提交
49
- You have [Node](https://nodejs.org/en/) at v10.x.x only and [Yarn](https://yarnpkg.com/en/) at v1.2.0+.
S
soupette 已提交
50
- You are familiar with Git.
51

S
soupette 已提交
52
## Development Workflow
C
cyril lopez 已提交
53

54 55
To facilitate the contribution, we have drastically reduced the amount of commands necessary to install the entire development environment.

J
Jim LAURIE 已提交
56
First of all, you need to check if you're using the [required versions of Node.js and npm](https://strapi.io/documentation/3.0.0-beta.x/getting-started/install-requirements.html)
C
cyril lopez 已提交
57

S
soupette 已提交
58
Then, please follow the instructions below:
C
cyril lopez 已提交
59

S
soupette 已提交
60 61 62 63 64
#### 1. ▪ Fork the [repository](https://github.com/strapi/strapi)

[Go to the repository](https://github.com/strapi/strapi) and fork it to your own GitHub account.

#### 2. 💿 Clone from your repository
A
Aurelsicoko 已提交
65 66

```bash
S
soupette 已提交
67
git clone git@github.com:YOUR_USERNAME/strapi.git
A
Aurelsicoko 已提交
68 69
```

S
soupette 已提交
70
#### 3. ⏳ Install the dependencies
A
Aurelsicoko 已提交
71

S
soupette 已提交
72
Go to the root of the repository.
A
Aurelsicoko 已提交
73 74

```bash
S
soupette 已提交
75
cd strapi && yarn setup
A
Aurelsicoko 已提交
76 77
```

S
soupette 已提交
78
#### 4. 🚀 Start the example application
A
Aurelsicoko 已提交
79

S
soupette 已提交
80
**Go to the getstarted application**
A
Aurelsicoko 已提交
81 82

```bash
S
soupette 已提交
83 84
cd strapi/examples/getstarted
yarn develop
A
Aurelsicoko 已提交
85 86 87 88 89 90
```

The server (API) is available at http://localhost:1337

> ⚠️  If you've followed the recommended setup, you should not be able to reach the administration panel at http://localhost:1337/admin.

S
soupette 已提交
91 92
**Start the administration panel server**

A
Aurelsicoko 已提交
93
```bash
S
soupette 已提交
94 95
cd strapi/packages/strapi-admin
yarn develop
A
Aurelsicoko 已提交
96 97 98 99 100 101
```

The administration panel is available at http://localhost:4000/admin

**Awesome! You are now able to contribute to Strapi.**

S
soupette 已提交
102 103 104 105 106 107 108 109 110 111 112 113 114 115
#### 5. Available commands

- `yarn watch` starts yarn watch in all packages.
- `yarn build` builds the `strapi-helper-plugin` (use this command when you develop in the administration panel).
- `yarn setup` installs the dependencies.
- `yarn lint` lints the codebase.
- `yarn test:clean` removes the coverage.
- `yarn test:front` runs the front-end related tests.
- `yarn test:front:watch` runs an interactive test watcher for the front-end.
- `yarn test:snyk` checks the dependencies vulnerabilities.
- `yarn test:unit` runs the back-end unit tests.
- `yarn test:e2e` runs an end-to-end test suite.
- `yarn test:generate-app` generates a test application.
- `yarn test:start-app` starts the test application.
A
Aurelsicoko 已提交
116 117

---
C
cyril lopez 已提交
118

A
Alexandre Bodin 已提交
119 120
## Running the tests

S
soupette 已提交
121
**Changing the database:**
A
Alexandre Bodin 已提交
122

123 124
You can run the test suites using different databases:

A
Alexandre Bodin 已提交
125
```bash
A
Alexandre Bodin 已提交
126 127 128 129
$ node test/e2e.js --db=sqlite
$ node test/e2e.js --db=mongo
$ node test/e2e.js --db=postgres
$ node test/e2e.js --db=mysql
A
Alexandre Bodin 已提交
130 131
```

S
soupette 已提交
132
---
A
Alexandre Bodin 已提交
133

134
## Miscellaneous
A
Alexandre Bodin 已提交
135

S
soupette 已提交
136
### Repository Organization
A
Alexandre Bodin 已提交
137

138
We chose to to use a monorepo design that exploits [Yarn Workspaces](https://yarnpkg.com/en/docs/workspaces) in the way [React](https://github.com/facebook/react/tree/master/packages) or [Babel](https://github.com/babel/babel/tree/master/packages) does. This allows the community to easily maintain the whole ecosystem, keep it up-to-date and consistent.
A
Alexandre Bodin 已提交
139

140
We do our best to keep the master branch as clean as possible, with tests passing at all times. However, it may happen that the master branch moves faster than the release cycle. Therefore check the [releases on npm](https://www.npmjs.com/package/strapi) so that you're always up-to-date with the latest stable version.
A
Alexandre Bodin 已提交
141

S
soupette 已提交
142
### Reporting an issue
143

144
Before submitting an issue you need to make sure:
S
soupette 已提交
145

146 147 148 149 150 151
- You are experiencing a concrete technical issue with Strapi.
- You have already searched for related [issues](https://github.com/strapi/strapi/issues), and found none open (if you found a related _closed_ issue, please link to it from your post).
- You are not asking a question about how to use Strapi or about whether or not Strapi has a certain feature. For general help using Strapi, you may:
  - Refer to [the official Strapi documentation](http://strapi.io).
  - Ask a member of the community in the [Strapi Slack Community](https://slack.strapi.io/).
  - Ask a question on [StackOverflow](http://stackoverflow.com/questions/tagged/strapi).
152
- Your issue title is concise, on-topic and polite.
153
- You can and do provide steps to reproduce your issue.
154 155 156 157
- You have tried all the following (if relevant) and your issue remains:
  - Make sure you have the right application started.
  - Make sure you've killed the Strapi server with CTRL+C and started it again.
  - Make sure the application you are using to reproduce the issue has a clean `node_modules` directory, meaning:
S
soupette 已提交
158 159 160
    - no dependencies are linked (e.g. you haven't run `npm link`)
    - that you haven't made any inline changes to files in the `node_modules` folder
    - that you don't have any weird global dependency loops. The easiest way to double-check any of the above, if you aren't sure, is to run: `$ rm -rf node_modules && npm cache clear && npm install`.