swap-project-example
Version:
An example repository to illustrate to result of generating a project with generate-swap-project (https://github.com/rbecheras/generate-swap-project)
187 lines (131 loc) • 5.69 kB
Markdown
# swap-project-example
<p style="text-align:center">
By <img src="src/assets/img/brand.png"/><br/>
<span style="font-weight: bold; font-style: italic; font-size:1.5em">
−− An example repository to illustrate to result of generating a project with generate-swap-project (https://github.com/rbecheras/generate-swap-project) −−
</span><br>
<a href="https://npmjs.org/package/swap-project-example" target="_blank">
<img alt="NPM version" src="https://badge.fury.io/js/swap-project-example.svg"/>
</a>
<a href="https://travis-ci.org/rbecheras/swap-project-example" target="_blank">
<img alt="Build Status" src="https://travis-ci.org/rbecheras/swap-project-example.svg?branch=master"/>
</a>
<a href="https://standardjs.com" target="_blank">
<img alt="JavaScript Style Guide" src="https://img.shields.io/badge/code_style-standard-brightgreen.svg"/>
</a>
</p>
## Installation
### Global
```sh
$ yarn gobal add swap-project-example
```
or
```sh
$ npm install --global swap-project-example
```
### Local
```sh
$ yarn add [-D] swap-project-example
```
or
```sh
$ npm install --save[-dev] swap-project-example
```
## Usage
### Global
```sh
$ swap-project-example
```
### Local
```js
import swapProjectExample from 'swap-project-example'
swapProjectExample()
```
### Example
#### Usage screenshot

## API
**@TODO: document the API here**
## Contributing
### Codebase
The codebase is written using the [ESNext Specification](https://github.com/hemanth/es-next) (ECMAScript Stage 0), following the [StandardJS Code Style](https://standardjs.com/)
[](https://github.com/hemanth/es-next)
[](https://github.com/standard/standard)
[](https://eslint.org)
[](https://babeljs.io)
[](https://yarnpkg.com/en/)
We use:
- [Yarn](https://yarnpkg.com/fr/) to handle npm dependencies,
- [ESNext CLI](https://github.com/esnext/esnext) to transform ESx code to ESNext,
- [Babel CLI](https://babeljs.io/) to transpile ESNext code to node/browser compatible javascript,
- And [Standard CLI](https://www.npmjs.com/package/standard) + [ESLint](https://eslint.org) to lint or format ESNext codebase.
### Contribution guide
> See the [contribution guide](CONTRIBUTING.md) in a separated document.
### Development
#### Global dependencies
Get the latest node engine (example with `nvm`):
```sh
$ nvm install lts/carbon
```
Install yarn from npm (for development only):
```sh
$ npm install --global yarn
```
All the rest of the development dependencies are local.
#### Clone and install
Clone the repo and install dependencies:
```sh
$ git clone git@github.com:rbecheras/swap-project-example.git
$ cd swap-project-example
$ yarn install
```
#### Running test
Finally, run the test pipeline:
```sh
$ yarn pipeline:test
```
#### Available yarn scripts
| Task Command | Task description |
|---|---|
| `yarn clear` | Delete the `./build/` and `./dist` repositories |
| `yarn lint` | Lint source files |
| `yarn lint:esnext` | Lint ESNext source files |
| `yarn build` | Build the whole distribution |
| `yarn build:assets` | Build all the assets |
| `yarn build:assets:img` | Build the images assets |
| `yarn build:lib` | Build only the lib |
| `yarn build:tests` | Build only the tests |
| `yarn build:docs` | **[TODO]** Build only the docs |
| `yarn test` | Run the tests in `./dist/tests/` |
| `yarn tests` | An alias for `yarn test` |
| `yarn travis` | Run the travis script |
| `yarn docs` | **[TODO]** Serve the docs |
| `yarn pipeline` | Run the complete pipeline |
| `yarn pipeline:test` | Run the required jobs to run the tests, then run the tests |
| `yarn pipeline:build` | Run the required jobs to build the dist, then build the dist |
| `yarn pipeline:docs` | **[TODO]** Run the required jobs to serve the docs, then serve the docs |
| `yarn pipeline:build:tests` | Run the required jobs to build the docs, then build the docs |
| `yarn pipeline:build:lib` | Run the required jobs to build the docs, then build the docs |
| `yarn pipeline:build:docs` | **[TODO]** Run the required jobs to build the docs, then build the docs |
| `yarn release` | An alias to `yarn release:patch` |
| `yarn release:prerelease` | Release and publish a new semver version (x.y.z-rc+1)|
| `yarn release:patch` | Release and publish a new patch semver version (`x.y.z+1`)|
| `yarn release:minor` | Release and publish a new minor semver version (`x.y+1.z=0`)|
| `yarn release:major` | Release and publish a new major semver version (`x+1.y=0.z=0`)|
#### Develop in BDD mode
> **B.D.D.** means **Behavior-Driven-Development**
The project is ready to code in BDD mode. Just run the `bdd` yarn command:
```
$ yarn bdd
```
The project will be lint, built, the BDD unit tests will be run, and the process will watch for any file changes to loop over the previous tasks (`lint`, `build`, `test`, `watch`).
#### Releasing a new version
The task `yarn pipeline:build` generate a `./dist` folder in the repository's root directory but this folder is not part of the git repository (there is an entry in the `.gitignore` file). However the dist folder is included in the `package.json#files` field.
Thus to release a new, lets say, "patch" version, just run:
```sh
$ yarn release:patch
```
The whole build pipeline is run locally (lint, transpile, test) and then a new git tag and a new npm tag are pushed up.
## License
Copyright © [Rémi Becheras](https://github.com/rbecheras)
See [LICENSE](LICENSE)