Fuse SDK
Pre-requisites
Install packages listed below by clicking on the respective link
- pnpm - https://pnpm.io/installation
- JQ - https://github.com/stedolan/jq
- Volta - https://volta.sh
Home to all the fuse SDK(s) as below
What is this repository for?
A monorepo for all Fuse SDK(s). you can find all the SDK applications under folder apps and we also have few of the packages (Helpers/Utilities) under folder packages
How do I get set up?
Installation
We will be using pnpm instead of npm
and
volta as node version manager. Run the following command for
installing dependencies.
We are also using turbo repo as a build system to run Builds, Lints and Tests.
Adding packages
For installing Packages at workspace level, run the following command
pnpm i <axios_this_is_example> -w
For installing Packages at a specific application, run the following command
pnpm i <axios_this_is_example> --filter "<workspace_app_name>"
For installing workspace at a specific directory, run the following command
pnpm install @appfire/helpers --filter "./<directory_name>/*"
for specific app
pnpm install @appfire/helpers --filter "@appfire/fuse-cdk-iac"
Adding new Library
We have a sample application lib-template
. We will use it to create a new app.
Run the following command to generate new library in desired folder
cp -R _templates/lib <path_to_new_lib>
once its done. Change the directory to newly created library and update its name
from @appfire/lib-template
to Preferred name
Package Versioning Strategies
When creating a release branch from the develop branch, we run the following command to select and update package versions. We use Changesets to update the versions (major, minor, or patch) and interdependent things by running the following command:
bash scripts/ci/version.sh
Package Publishing Strategies
Different strategies will be used to publish packages based on the branch as outlined below:
Release Branches
For branches matching the pattern release/*, we will use the --force
flag
to publish to the appfire-common-snapshot
registry with the rc
tag. This
will allow users to install the package using the rc
tag instead of the
default latest
tag. For example:
pnpm i @appfire/fuse-cdk-iac@rc
Develop Branch
For the develop branch, we will also use the --force
flag to publish to
the appfire-common-snapshot
registry. Users can install the package by running
the following command:
pnpm i @appfire/fuse-cdk-iac@latest
Master Branch
For the master branch, we will publish to the appfire-npm
registry. Users
can install the package by running the following command:
pnpm i @appfire/fuse-cdk-iac@latest
Note that pnpm will not publish the package if the current version is already available in the registry.
To publish the packages, run the following command:
bash scripts/ci/publish.sh
Docs configuration for new Library
- Add following in
package.json
"scripts": {
"docs": "npx typedoc && cp CHANGELOG.md ../../docs/docs/<library name> && cp README.md ../../docs/docs/<library name>/README.md"
}
- Add
typedoc.json
file to the library folder, which contains:
{
"entryPoints": [
"src/index.ts"
],
"out": "docs-typedoc",
"publicPath": "../",
"plugin": [
"typedoc-plugin-markdown"
]
}
Contribution guidelines
- Writing tests
- Based on type of changes (Major, Minor, and Patch) use
changeset
to update package versions. for more information please check here
Who do I talk to?
- saiumesh.dhanewar@appfire.com
- team-fuse