npm package: @qoi/cli
Description: qoi ------------ Lightweight tooling for your javascript and typescript
Author: Arjay Elbore
Latest version: 0.2.3

qoi
------------
Lightweight tooling for your javascript and typescript

Requirements
------------
* Node 16.x
* Git Bash Terminal or any Bash terminal

Installation
------------
```
npm install --save-dev @qoi/{cli,build,test}
```

CLI Options
------------
### Qoi 
TypeScript and ES module execution engine
```
Usage:
  $ qoi [file]

Options:
  -h, --help     Display this message
  -v, --version  Display version number
```

### Build
Command Line Bundler or packager for typescript and javascript
```
  Usage:
  $ qoi build [dir]

  Options:
  -c, --config <file>    [string] use specified config file
  -f, --format <format>  [string] Specifies the format of the generated bundle (default: 'es')
  --preset <preset>      [preset] base configuration for your application
  --outDir <outDir>      [string] output directory (default: dist)
  --external <external>  [string] Specify external dependencies
  --resolve <resolve>    [boolean] resolve external dependencies
  --module               [boolean] module should be has extension of (.mjs)
  --minify               [boolean] enable/disable minification(default: false)
  --sourcemap            [boolean] output source maps for build (default: false)
  --emptyOutDir          [boolean] force empty outDir when it's outside of root
  --dts                  [boolean] Generates corresponding .d.ts file  (default: false)
  --link                 [boolean] symlink your outDir as npm package (default: false)
  -h, --help             Display this message
  -v, --version          Display version number
```

### Test
Command Line testing tool for nodejs and browser base
```
Usage:
  $ qoi test [...file]

Options:
  -t, --timeout <timeout>  [number] Specify test timeout threshold (in milliseconds) [default: 2000]
  --threshold <threshold>  [string] Enable the thresholds
  --include-dir            [string] Directory folder source (default: src)
  --check-coverage         Enable coverage  (default false)
  -h, --help               Display this message
  -v, --version            Display version number
```

### Versions
|  Package            | Description                                                      | version | 
| ------------------- | ------                                                           | ------ 
| @qoi/cli            | Command line                                                     | 0.2.2
| @qoi/build          | Bundler or packager for typescript and javascript                | 0.2.2
| @qoi/fs             | Async Nodejs FileSystem                                          | 0.2.1
| @qoi/register       | Transpile your esm javascript and typescript on the fly          | 0.2.2
| @qoi/test           | Testing tool for nodejs and browser base                         | 0.1.0
| @qoi/types          | all types of qoi                                                 | 0.0.8
<br />

### Common issues
* When using `Powershell` add `git bash` PATH in your `System environment variables`
* If you encounter error when using windows, you should open `powershell` or `git bash` terminal as `Administrator`
  ```
  [Error: EPERM: operation not permitted, symlink <source file> -> <destination file>
  ```
* swc paths doesnt work with symlink
* resolving `@rollup/plugin-commonjs` will cause circular dependency with `glob` package
  ```
  /// Circular dependency: node_modules/glob/glob.js -> node_modules/glob/sync.js -> node_modules/glob/glob.js
  https://github.com/isaacs/node-glob/issues/365
  ```
* when using Windows OS and will support tsconfig paths, you need to install 2 npm packages
  * `npm i typescript-paths rollup-plugin-tsconfig-paths --save-dev` or `yarn add typescript-paths rollup-plugin-tsconfig-paths --dev`