1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
# TypeSpec Client Generator CLI
This directory contains npm package definitions for `@azure-tools/typespec-client-generator-cli` (tsp-client) with pinned versions to ensure reproducible builds across environments.
## Files
- **`package.json`** - npm package definition with pinned tsp-client version
- **`package-lock.json`** - Lock file ensuring exact dependency versions
## Prerequisites
- **Node.js** (with npm) - Required to install and run tsp-client
## Installation
### Install dependencies
```bash
# Navigate to this directory
cd eng/common/tsp-client
# Install dependencies
npm ci
```
## Usage
After installation, you can run `tsp-client` using `npm exec --prefix {path_to_the_eng/common/tsp-client}`.
Note that you should *not* navigate into the `eng/common/tsp-client` folder, since several `tsp-client` commands require the current working directory to be the client library's root.
```bash
# Set the tsp-client directory path relative to your current working directory
_TspClientDir=eng/common/tsp-client
# Get help
npm exec --prefix ${_TspClientDir} --no -- tsp-client --help
# Check version
npm exec --prefix ${_TspClientDir} --no -- tsp-client version
# Generate client code
npm exec --prefix ${_TspClientDir} --no -- tsp-client generate --output-dir ./generated
# Initialize a new project
npm exec --prefix ${_TspClientDir} --no -- tsp-client init --tsp-config ./tspconfig.yaml
```
## CI/CD Best Practices
```bash
_TspClientDir=eng/common/tsp-client
npm ci --prefix ${_TspClientDir}
npm exec --prefix ${_TspClientDir} --no -- tsp-client init --update-if-exists --tsp-config https://github.com/Azure/azure-rest-api-specs/blob/dee71463cbde1d416c47cf544e34f7966a94ddcb/specification/contosowidgetmanager/Contoso.WidgetManager/tspconfig.yaml
```
## Package Management
### Automatic Updates via Dependabot
Dependabot is configured to automatically check for updates to `@azure-tools/typespec-client-generator-cli` daily and create pull requests with updated `package.json` and `package-lock.json` files. This ensures the package stays current with the latest versions while maintaining security through the PR review process.
### Manual Version Updates
If you need to manually update the tsp-client version:
1. Edit `package.json` to update the version:
```json
{
"dependencies": {
"@azure-tools/typespec-client-generator-cli": "0.28.1"
}
}
```
2. Update the lock file:
```bash
npm install
```
3. Commit both `package.json` and `package-lock.json`
|