feature-toggle-service
Version:
The simplest solution for feature toggle in Javascript. Simple how it should be.
126 lines (76 loc) • 4.79 kB
Markdown
# Feature Toggle Service
[](https://greenkeeper.io/)
[](https://stackblitz.com/edit/feature-toggle-service-playground)
[](http://badge.fury.io/js/feature-toggle-service) [](https://npmjs.org/feature-toggle-service)
[](LICENSE)
[](https://circleci.com/gh/willmendesneto/feature-toggle-service)
[](https://coveralls.io/r/willmendesneto/feature-toggle-service?branch=master)
[](https://david-dm.org/willmendesneto/feature-toggle-service)
[](https://npmjs.org/feature-toggle-service)
[](https://npmjs.org/feature-toggle-service)
The simplest solution for [feature toggles](http://martinfowler.com/bliki/FeatureToggle.html) in Javascript. Simple how it should be.
## Why Feature toggle?
> This is a common concept, but why use this directive instead solve it via server-side rendering?
The idea of this directive is make this process transparent and easier. So the main point is integrate this directive with other tooling process, such as:
- Server-side rendering;
- Progressive rendering;
- Any other that yoy like :)
You can integrate with WebSockets or handling this in a EventSourcing architecture. It's totally transparent for you and you can integrate easier in your application.
## Contributing
Please check our [contributing.md](https://github.com/willmendesneto/feature-toggle-service/blob/master/contributing.md) to know more about setup and how to contribute.
## Setup and installation
Make sure that you are using the NodeJS version is the same as `.nvmrc` file version. If you don't have this version please use a version manager such as `nvm` or `n` to manage your local nodejs versions.
> Please make sure that you are using NodeJS version 6.10.2
Assuming that you are using `nvm`, please run the commands inside this folder:
```bash
$ nvm install $(cat .nvmrc); # install required nodejs version
$ nvm use $(cat .nvmrc); # use nodejs version
```
In Windows, please install NodeJS using one of these options:
Via `NVM Windows` package: Dowload via [this link](https://github.com/coreybutler/nvm-windows). After that, run the commands:
```bash
$ nvm install $(cat .nvmrc); # install required nodejs version
$ nvm use $(cat .nvmrc); # use nodejs version
```
Via Chocolatey:
```bash
$ choco install nodejs.install -version 6.10.2
```
### Install yarn
We use `yarn` as our package manager instead of `npm`
[Install it following these steps](https://yarnpkg.com/lang/en/docs/install/#mac-tab)
After that, just navigate to your local repository and run
```bash
$ yarn install
```
## Demo
Try out our [demo on Stackblitz](https://feature-toggle-service-playground.stackblitz.io)!
### Run the tests
```bash
$ yarn test # run the tests
```
### Run the build
```bash
$ yarn build # run the tests
```
### Run the bundlesize check
```bash
$ yarn bundlesize # run the tests
```
### Run the code lint
```bash
$ yarn lint # run the tests
```
## `FeatureToggleService`
This service exposes a few different methods with which you can interact with feature toggle service.
### `featureToggleService.set(obj)`
Adds the feature toggle configuration in your application. This information will be private and checked via `featureToggleService.isOn(key)` method.
### `featureToggleService.isOn(key, debug)`
Checks if the feature toggle configuration has the string key value with `true` value. For bundle reasons if you want to check if the feature toggle is turned off, please use `!featureToggleService.isOn(key)`. When `debug` param is passed as `true` and it's not `NODE_ENV` is not set to prod, it prints configuration, version and settings for debug purposes
## Publish
this project is using `np` package to publish, which makes things straightforward. EX: `np <patch|minor|major>`
> For more details, [please check np package on npmjs.com](https://www.npmjs.com/package/np)
## Author
**Wilson Mendes (willmendesneto)**
- <https://twitter.com/willmendesneto>
- <http://github.com/willmendesneto>