# @ziuchen/tencent-scf-utils

A simple tool for deploying Tencent SCF

## Install

```sh
npm i @ziuchen/tencent-scf-utils -D
```

## Usage

```sh
tscf -h
```

### Deploy Command

Deploy a directory to Tencent SCF:

```sh
tscf deploy ./dist -n my-function
```

### Layer Command

Build and upload a layer.zip with production dependencies:

```sh
tscf layer -p package.json
```

You can pass additional npm install arguments using the `--npm-args` option:

```sh
# Pass --ignore-scripts to npm install
tscf layer --npm-args "--ignore-scripts"

# Pass multiple npm arguments
tscf layer --npm-args "--ignore-scripts --no-audit --no-fund"

# Combine with layer-specific options
tscf layer -p custom-package.json --npm-args "--ignore-scripts --verbose"
```

The `--npm-args` option accepts a space-separated string of arguments that will be passed directly to the `npm install` command.

## Best Practice

tscf will load config from enviroment variables below:

```bash
TENCENTCLOUD_SCF_FUNCTION_NAME=xxxxxxxxxxxxxxxxxxxx
TENCENTCLOUD_SCF_SECRET_ID=xxxxxxxxxxxxxxxxxxxx
TENCENTCLOUD_SCF_SECRET_KEY=xxxxxxxxxxxxxxxxxxxx
```

Using with `@dotenvx/dotenvx`:

```json
{
  "scripts": {
    "deploy:scf": "dotenvx run -- tscf deploy ./dist"
  }
}
```

dotenvx will load enviroment variables from `.env` file for `tencent-scf-utils`.

## Development

This link `tencent-scf-utils` to global.

```sh
pnpm link -g
```

In other package, run this to link `tencent-scf-utils` locally.

```sh
pnpm link -g tencent-scf-utils
```

After modified code, you should rerun these command to make changes apply.

## Publish

```sh
pnpm login --registry=https://registry.npmjs.org/
```

```sh
pnpm publish --access=public --no-git-checks
```