iwa-cli
Version:
An ImmutableWebApp CLI using oclif and cosmiconfig
174 lines (133 loc) • 4.11 kB
Markdown
iwa-cli
=======

An ImmutableWebApp CLI using oclif and cosmiconfig
[](https://oclif.io)
[](https://npmjs.org/package/iwa-cli)
[](https://npmjs.org/package/iwa-cli)
[](https://github.com/chrispcode/iwa-cli/blob/master/package.json)
<!-- toc -->
* [Installation](#installation)
* [Usage](#usage)
* [Commands](#commands)
<!-- tocstop -->
# Installation
<!-- installation -->
```sh-session
yarn add --dev iwa-cli
npm install --save-dev iwa-cli
```
<!-- installationstop -->
# Usage
## Generate
1. Create a `.iwarc` file in the root of your project.
The format of this file should look like this.
```json
{
"env": {
"all" : {
"COMMON_ATTRIBUTE": "DEFAULT_VALUE",
},
"production": {
"KEY": "VALUE_PRODUCTION"
},
"development": {
"KEY": "VALUE_DEVELOPMENT",
"COMMON_ATTRIBUTE": "DEVELOPMENT_SPESIFIC_VALUE",
}
}
}
```
* The `all` and `production` environment cannot be omitted!
* Specify as many environments as you need! In this case we have 2 (one for production and one for development)
2. Create a script tag with `id="iwa"` in your index.html or template.index.html
```html
<html lang="en">
<head></head>
<body>
<div id="menu"></div>
<main id="root"></main>
<div id="footer"></div>
<script id="iwa"></script> <!-- This line here is the one -->
</body>
</html>
```
* Make sure you don't have anything it, because it will get erased!
* Make sure it is placed before all you bundles!
3. Run the `generate` command
```sh-session
iwa generate --env=production ./example/index.html # or the location where the file is located
```
The command will inject the configuration in the script tag:
```html
<html lang="en">
<head></head>
<body>
<div id="menu"></div>
<main id="root"></main>
<div id="footer"></div>
<script id="iwa">window.env = {"COMMON_ATTRIBUTE": "DEFAULT_VALUE", "KEY":"VALUE_PRODUCTION"}</script>
</body>
</html>
```
## Override
You can override a variable with process.env variables:
```sh-session
KEY="VALUE_PROCESS" iwa generate ./example/index.html
```
## Remove
You can also erase the configuration from a file, by using the `remove` command
```sh-session
iwa remove ./example/index.html
```
# Commands
<!-- commands -->
* [`iwa check [INPUT]`](#iwa-check-input)
* [`iwa generate [INPUT] [OUTPUT]`](#iwa-generate-input-output)
* [`iwa remove [INPUT]`](#iwa-remove-input)
## `iwa check [INPUT]`
Checks HTML file for injected iwa config, useful in a pre-commit hook to prevent commiting injected iwa-config.
```
USAGE
$ iwa check [INPUT]
OPTIONS
-d, --verbose
-h, --help show CLI help
-s, --isStaged Checks only staged files, and will throw error if config found
-v, --version show CLI version
ALIASES
$ iwa check
$ iwa c
```
_See code: [src/commands/check.ts](https://github.com/chrispcode/iwa-cli/blob/v1.1.0/src/commands/check.ts)_
## `iwa generate [INPUT] [OUTPUT]`
Generates a HTML file, where window.env configuration is injected
```
USAGE
$ iwa generate [INPUT] [OUTPUT]
OPTIONS
-c, --config=config Location to look for iwa configuration
-d, --verbose
-e, --env=env [default: production]
-h, --help show CLI help
-v, --version show CLI version
ALIASES
$ iwa gen
$ iwa g
```
_See code: [src/commands/generate.ts](https://github.com/chrispcode/iwa-cli/blob/v1.1.0/src/commands/generate.ts)_
## `iwa remove [INPUT]`
Removes injected configuration from an HTML file
```
USAGE
$ iwa remove [INPUT]
OPTIONS
-h, --help show CLI help
-v, --version show CLI version
ALIASES
$ iwa rm
```
_See code: [src/commands/remove.ts](https://github.com/chrispcode/iwa-cli/blob/v1.1.0/src/commands/remove.ts)_
<!-- commandsstop -->