# @vtex/sales-app

This repository contains the base configuration to create extensible poins inside VTEX Sales App

### What's here?

- A CLI to create a template, test locally and build your extension point to Sales App
- A Webpack site configured to exposes the extension points using mudle-federation
- Type definitions about Sales App extension points

### Sales App CLI

```
USAGE
  $ sales-app [COMMAND]

COMMANDS
  build   Build your Sales App Extension Points
  create  Creates the Sales App project base structure
  dev     Start your Sales App in development mode
  help    display help for sales-app
```

#### Create Command

```
Creates the base structure for Sales App project

USAGE
  $ sales-app create [PATH]

ARGUMENTS
  PATH  [default: sales-app] the path where the Sales App should be created

DESCRIPTION
  Creates the base structure for Sales App project

EXAMPLES
  $ sales-app create {my_custom_path}
```

#### Dev Command

```
Start your Sales App in development mode

USAGE
  $ sales-app dev ACCOUNT [PATH] [PORT]

ARGUMENTS
  ACCOUNT  the account for which the dev environment should run
  PATH     [default: sales-app] the path where the Sales App is located
  PORT     [default: 5413] the first port number allocated to Sales App

FLAGS
  --show-placeholders  Show placeholders for extension points

DESCRIPTION
  Start your Sales App in development mode

EXAMPLES
  $ sales-app dev {account}
```

#### Build Command

```
Build your Sales App Extension Points

USAGE
  $ sales-app build ACCOUNT [PATH]

ARGUMENTS
  ACCOUNT  the account for which the dev environment should run
  PATH     [default: sales-app] the path where the Sales App is located

DESCRIPTION
  Build your Sales App Extension Points

EXAMPLES
  $ sales-app build {account}
```

#### Debug mode

To enable debug mode, simply set the environment variable SALES_APP_DEBUG=true, for example:

`$ SALES_APP_DEBUG=true sales-app {command}`

### How to test the CLI locally

#### Setup

- Go to `instore-core/packages/sales-app-extensions`
- Run `yarn link` to create the yarn package link locally
- Run `yarn build` to build the project
- Start an empty nodejs project running `yarn init -y` outside the `instore-core` folder
- Run `yarn add -D @vtex/sales-app` to install the package and get all deps
- Run `sales-app create {my_custom_path}` to create the base structure of the project
- Go to your empty project and run `yarn link @vtex/sales-app` to link the package dep in your project

#### Commands

You can execute the CLI commands running, like this example:

`$ node_modules/@vtex/sales-app/bin/dev.js dev vtexinstoredev`
