# Command Line Interface for UI Applications & Libraries

[Build Job](https://jenkinsbuild.elliemae.cloud/job/UIPlatform/job/pui-cli/job/master)

[SonarQube Report](https://sonarqube.jenkins.elliemae.cloud/overview?id=elliemae.pui.cli-master)

[Documentation Portal](https://docs.pui.mortgagetech.q1.ice.com/cli)

## Migration Guide

### v7 to v8

[Changelog](https://confluence.ice.com/display/FEAE/CLI+ChangeLog#CLIChangeLog-v8)

### v6 to v7

[ChangeLog](https://confluence.elliemae.io/display/FEAE/CLI+ChangeLog#CLIChangeLog-v7)

### v5 to v6

[ChangeLog](https://confluence.elliemae.io/display/FEAE/CLI+ChangeLog)

### v4 to v5

For most users this upgrade doesn't break functionality. If it does, please reach out to ui-platform-chat channel for assistance

### v3 to v4

Version 4 has breaking changes that impacts only libraries (e.g: app sdk, app widgets etc) not applications

Following changes to be done in package.json file of the library after upgrading to v4

- in main field, replace ./dist/index.js with ./dist/cjs/index.js
- in module field, replace ./lib/index.js with ./dist/es/index.js
- add following exports field to your package.json

  ```json
    "exports": {
      ".": {
        "import": "./dist/es/index.js",
        "require": "./dist/cjs/index.js"
      }
    },
  ```

### v2 to v3

V3 uses new version of husky, after upgrading cli follow the steps below to configure git hooks

- `npx --no-install husky-init && npm exec -- github:typicode/husky-4-to-6 --remove-v4-config`
- remove .husky folder from your git repo root
- copy the entire [/.husky](https://git.elliemae.io/platform-ui/pui-cli/blob/master/.husky) folder from this repo and place it in your git repo root
- `npm run prepare`
- create 'lint-staged.config.js' in your git repo root and copy the contents below

```js
const { lintStagedConfig } = require('@elliemae/pui-cli');
module.exports = lintStagedConfig;
```

- remove following lines from your package.json

```json
"lint-staged": {
    "*.js": [
      "npm run lint:fix",
      "npm run test:staged",
      "npm run gendoc"
    ],
    "*.mdx": [
      "prettier --write"
    ],
    "*.json": [
      "prettier --write"
    ]
  },
```

#### Enabling Typescript

Version 3 has support to Typescript

To enable typescript for your application source code add tsconfig.json file to your application root and add the json snippet below

```json
{
  "extends": "@elliemae/pui-cli/lib/typescript/app.tsconfig.json",
  "compilerOptions": {
    "outDir": "dist"
  },
  "include": ["app/**/*"],
  "exclude": ["node_modules"]
}
```

for library source code

```json
{
  "extends": "@elliemae/pui-cli/lib/typescript/library.tsconfig.json",
  "compilerOptions": {
    "outDir": "dist",
    "declarationDir": "dist/types"
  },
  "include": ["lib/**/*"],
  "exclude": ["node_modules"]
}
```

### v1 to v2

- after cli upgrade to v2 sync up your application code with latest version of [React boilerplate](https://git.elliemae.io/platform-ui/pui-react-boilerplate)
