@ziuchen/tencent-scf-utils
v1.1.13
Published
A simple tool for deploying Tencent SCF
Maintainers
Readme
@ziuchen/tencent-scf-utils
A simple tool for deploying Tencent SCF
Install
npm i @ziuchen/tencent-scf-utils -DUsage
tscf -hDeploy Command
Deploy a directory to Tencent SCF:
tscf deploy ./dist -n my-function --region ap-shanghai --namespace defaultdeploy publishes a function version but never updates an alias.
Release Command
Upload a prebuilt Layer ZIP to COS, publish its new version, bind it to $LATEST, deploy function code, and publish a function version:
tscf release ./dist \
--layer-zip artifacts/dependencies.zip \
--layer-name my-dependencies \
--replace-layer-name old-dependencies \
--layer-bucket my-layer-bucket-1234567890 \
--layer-region ap-shanghai \
--layer-prefix layers/my-function \
--layer-runtime Nodejs24.11 \
--layer-use-accelerateThe Layer object key is derived from the ZIP SHA-256 digest. The command preserves other Layer bindings and replaces --replace-layer-name in place; without that option, it replaces the matching new Layer name. --layer-runtime is always sent to SCF as the new Layer's compatible runtime. It does not update an alias.
For archives larger than 5 MiB, release uses COS high-level multipart upload with progress logging, retries, and per-request timeouts. The deployment identity needs PutObject, InitiateMultipartUpload, ListMultipartUploads, ListParts, UploadPart, CompleteMultipartUpload, and AbortMultipartUpload on the selected Layer object prefix.
Layer Command
Build and upload a layer.zip with production dependencies:
tscf layer -p package.jsonYou can pass additional npm install arguments using the --npm-args option:
# 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:
TENCENTCLOUD_SCF_FUNCTION_NAME=xxxxxxxxxxxxxxxxxxxx
TENCENTCLOUD_SCF_REGION=ap-shanghai
TENCENTCLOUD_SCF_NAMESPACE=default
TENCENTCLOUD_SCF_SECRET_ID=xxxxxxxxxxxxxxxxxxxx
TENCENTCLOUD_SCF_SECRET_KEY=xxxxxxxxxxxxxxxxxxxx
TENCENTCLOUD_SCF_LAYER_NAME=my-dependencies
TENCENTCLOUD_SCF_REPLACE_LAYER_NAME=old-dependencies
TENCENTCLOUD_SCF_LAYER_BUCKET=my-layer-bucket-1234567890
TENCENTCLOUD_SCF_LAYER_BUCKET_REGION=ap-shanghai
TENCENTCLOUD_SCF_LAYER_PREFIX=layers/my-function
TENCENTCLOUD_SCF_LAYER_RUNTIME=Nodejs24.11
TENCENTCLOUD_SCF_LAYER_USE_ACCELERATE=trueTENCENTCLOUD_SCF_LAYER_BUCKET is the full COS bucket name. SCF's API receives the bucket name without the AppId suffix automatically.
Set TENCENTCLOUD_SCF_LAYER_USE_ACCELERATE=true to upload through COS global acceleration; it passes UseAccelerate to the SDK and uses the bucket's cos.accelerate.myqcloud.com endpoint.
Using with @dotenvx/dotenvx:
{
"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.
pnpm link -gIn other package, run this to link tencent-scf-utils locally.
pnpm link -g tencent-scf-utilsAfter modified code, you should rerun these command to make changes apply.
Publish
Run the Publish npm package GitHub Actions workflow with workflow_dispatch.
It uses npm Trusted Publishing through GitHub OIDC and does not require an npm token in the repository.
