Skip to content
This repository has been archived by the owner on Oct 29, 2019. It is now read-only.

Latest commit

 

History

History
107 lines (62 loc) · 6.91 KB

CONTRIBUTING.md

File metadata and controls

107 lines (62 loc) · 6.91 KB

Contributing

Getting Started

Gutenberg is a Node.js-based project, built primarily in JavaScript. Be sure to have Node.js installed first. You should be running a Node version matching the current active LTS release or newer for this plugin to work correctly. You can check your Node.js version by typing node -v in the Terminal prompt.

You should also have the latest release of npm installed, npm is a separate project from Node.js and is updated frequently. If you've just installed Node.js which includes a version of npm within the installation you most likely will need to also update your npm install. To update npm, type this into your terminal: npm install npm@latest -g

To test the plugin, or to contribute to it, you can clone this repository and build the plugin files using Node. How you do that depends on whether you're developing locally or uploading the plugin to a remote host.

Local Environment

First, you need a WordPress Environment to run the plugin on. The quickest way to get up and running is to use the provided docker setup. Just install docker on your machine and run ./bin/setup-local-env.sh.

The WordPress installation should be available at http://localhost:8888 (username: admin, password: password). Inside the "docker" directory, you can use any docker command to interact with your containers.

Alternatively, you can use your own local WordPress environment and clone this repository right into your wp-content/plugins directory.

Next, open a terminal (or if on Windows, a command prompt) and navigate to the repository you cloned. Now type npm install to get the dependencies all set up. Then you can type npm run dev in your terminal or command prompt to keep the plugin building in the background as you work on it.

On A Remote Server

Open a terminal (or if on Windows, a command prompt) and navigate to the repository you cloned. Now type npm install to get the dependencies all set up. Once that finishes, you can type npm run build. You can now upload the entire repository to your wp-content/plugins directory on your webserver and activate the plugin from the WordPress admin.

You can also type npm run package-plugin which will run the two commands above and create a zip file automatically for you which you can use to install Gutenberg through the WordPress admin.

Workflow

A good workflow is to work directly in this repo, branch off master, and submit your changes as a pull request.

Ideally name your branches with prefixes and descriptions, like this: [type]/[change]. A good prefix would be:

  • add/ = add a new feature
  • try/ = experimental feature, "tentatively add"
  • update/ = update an existing feature

For example, add/gallery-block means you're working on adding a new gallery block.

You can pick among all the tickets, or some of the ones labelled Good First Issue.

Testing

Gutenberg contains both PHP and JavaScript code, and encourages testing and code style linting for both.

JavaScript Testing

Tests for JavaScript use Jest as the test runner. If needed, you can also use Enzyme for React component testing.

Assuming you've followed the instructions above to install Node and project dependencies, tests can be run from the command-line with NPM:

npm test

To run unit tests only, use npm run test-unit instead.

Code style in JavaScript is enforced using ESLint. The above npm test will execute both unit tests and code linting. Code linting can be verified independently by running npm run lint.

End to end Testing (integration tests)

If you're using the built-in local environment above, you can run the e2e tests locally using this command:

npm run test-e2e

or interactively

npm run test-e2e:watch

If you're using another local environment setup, you can still run the e2e tests by overriding the base URL and the default WP username/password used in the tests like so:

cypress_base_url=http://my-custom-basee-url cypress_username=myusername cypress_password=mypassword npm run test-e2e

PHP Testing

Tests for PHP use PHPUnit as the testing framework. Before starting, you should install PHPUnit and have a copy of WordPress Develop available and setup a wp-tests-config.php file. If the Gutenberg plugin is installed in the context of a WordPress Develop site, you can run phpunit directly from the command-line. Otherwise, you will need to specify the path to WordPress Develop's test directory as an environment variable:

WP_TESTS_DIR=/path/to/wordpress-develop/tests/phpunit phpunit

Code style in PHP is enforced using PHP_CodeSniffer. It is recommended that you install PHP_CodeSniffer and the WordPress Coding Standards for PHP_CodeSniffer ruleset using Composer. With Composer installed, run composer install from the project directory to install dependencies, then composer run-script lint to verify PHP code standards.

Code Coverage

Code coverage is measured for each PR using the codecov.io tool. Code coverage is a way of measuring the amount of code covered by the tests in the test suite of a project. In Gutenberg, it is currently measured for JavaScript code only.

How Designers Can Contribute

If you'd like to contribute to the design or front-end, feel free to contribute to tickets labelled Design. We could use your thoughtful replies, mockups, animatics, sketches, doodles. Proposed changes are best done as minimal and specific iterations on the work that precedes it so we can compare. If you use Sketch, you can grab the source file for the mockups (updated April 6th).

Contribute to the Documentation

Documentation is automatically synced from master to the Gutenberg Documentation Website every 15 minutes.

To add a new documentation page, you'll have to create a Markdown file in the docs folder and add an item to the manifest file.