addons-frontend/README.md

127 строки
4.6 KiB
Markdown
Исходник Обычный вид История

2016-02-24 18:58:37 +03:00
[![Build Status](https://travis-ci.org/mozilla/addons-frontend.svg?branch=master)](https://travis-ci.org/mozilla/addons-frontend)
2016-03-02 22:22:45 +03:00
[![Coverage Status](https://coveralls.io/repos/github/mozilla/addons-frontend/badge.svg?branch=master)](https://coveralls.io/github/mozilla/addons-frontend?branch=master)
2016-02-24 18:58:37 +03:00
2016-06-01 22:06:12 +03:00
[Documentation](http://addons-frontend.readthedocs.io/en/latest/)
2016-02-22 21:53:09 +03:00
# Addons-frontend 🔥
2016-02-19 21:00:53 +03:00
2016-06-21 19:11:07 +03:00
Front-end infrastructure and code to complement
[mozilla/addons-server](https://github.com/mozilla/addons-server).
2016-02-19 21:00:53 +03:00
2016-02-22 21:53:09 +03:00
## Requirements
* Node 4.x LTS
* npm 3.x
The easiest way to manage multiple node versions in development is to use
2016-07-22 20:24:06 +03:00
[nvm](https://github.com/creationix/nvm).
2016-02-22 21:53:09 +03:00
2016-02-23 19:01:58 +03:00
## Get started
* npm install
* npm run dev
2016-02-24 14:26:46 +03:00
2016-07-05 20:54:08 +03:00
## NPM scripts for development
Generic scripts that don't need env vars. Use these for development:
2016-02-24 14:26:46 +03:00
2016-05-20 01:33:30 +03:00
| Script | Description |
|------------------------|-----------------------------------------------------|
2016-07-11 15:04:15 +03:00
| npm run dev:amo | Starts the dev server (amo) |
2016-05-20 01:33:30 +03:00
| npm run dev:disco | Starts the dev server (discovery pane) |
2016-07-11 15:04:15 +03:00
| npm run dev:search | Starts the dev server (search app) |
2016-07-05 20:54:08 +03:00
| npm run eslint | Lints the JS |
| npm run stylelint | Lints the SCSS |
| npm run lint | Runs all the JS + SCSS linters |
2016-05-20 01:33:30 +03:00
| npm run version-check | Checks you have the minimum node + npm versions |
2016-07-05 20:54:08 +03:00
| npm test | Runs the unittest, servertests + lint |
| npm run unittest | Runs just the unittests |
| npm run unittest:dev | Runs the unittests and watches for changes |
| npm run servertest | Runs the servertests |
### Code coverage
The `npm run unittest` command generates a report of how well the unit tests
covered each line of source code.
The continuous integration process will give you a link to view the report.
To see this report while running tests locally, type:
open ./coverage/index.html
2016-07-22 20:24:06 +03:00
### Configuring for local development
The `dev` scripts above will connect to a hosted development API by default.
If you want to run your own
[addons-server](https://github.com/mozilla/addons-server)
API or make any other local changes, just add a local configuration
file for each app. For example, to run your own discovery pane API, first create
a local config file:
touch config/local-development-disco.js
2016-07-22 20:24:06 +03:00
Be sure to prefix the file with **local-development-** so that it doesn't pollute the
test suite.
Here's what `local-development-disco.js` would look like when
overriding the `apiHost` parameter so that it points to your docker container:
2016-07-22 20:24:06 +03:00
````javascript
module.exports = {
apiHost: 'http://olympia.dev',
};
````
When you start up your front-end discover pane server, it will now apply
overrides from your local configuration file:
npm run dev:disco
Consult the
[config file loading order docs](https://github.com/lorenwest/node-config/wiki/Configuration-Files#file-load-order)
to learn more about how configuration is applied.
2016-07-05 20:54:08 +03:00
### Building and running services
The following are scripts that are used in deployment - you generally won't
need unless you're testing something related to deployment or builds.
2016-04-15 22:29:27 +03:00
2016-07-05 20:54:08 +03:00
The env vars are:
2016-04-15 22:29:27 +03:00
2016-07-05 20:54:08 +03:00
`NODE_APP_INSTANCE` this is the name of the app e.g. 'disco'
`NODE_ENV` this is the node environment. e.g. production, dev, stage, development.
| Script | Description |
|------------------------|-----------------------------------------------------|
| npm run start | Starts the express server (requires env vars) |
| npm run build | Builds the libs (all apps) (requires env vars) |
2016-04-15 22:29:27 +03:00
2016-07-05 20:54:08 +03:00
Example: Building and running a production instance of the search app:
2016-04-15 22:29:27 +03:00
```
2016-05-20 01:33:30 +03:00
NODE_APP_INSTANCE=search NODE_ENV=production npm run build && npm run start
2016-04-15 22:29:27 +03:00
```
2016-02-24 14:26:46 +03:00
2016-02-19 21:00:53 +03:00
## Overview and rationale
2016-02-22 21:53:09 +03:00
This project will hold several distinct front-ends e.g:
2016-02-19 21:00:53 +03:00
* Editors search tool
* Discovery Pane
* and beyond...
2016-02-22 21:53:09 +03:00
We've made a conscious decision to avoid "premature modularization" and
keep this all in one repository. This will help us build out the necessary
tooling to support a universal front-end infrastructure without having to
worry about cutting packages and bumping versions the entire time.
2016-02-19 21:00:53 +03:00
2016-02-22 21:53:09 +03:00
At a later date if we need to move things out into their own project we
still can.
2016-02-19 21:00:53 +03:00
## Core technologies
* Based on Redux + React
2016-02-22 21:53:09 +03:00
* Code written in ES2015+
2016-02-19 21:00:53 +03:00
* Universal rendering via node
* Unit tests with high coverage (aiming for 100%)