KC's Workspace
    Preparing search index...

    KC's Workspace

    Kamontat's Workspace ecosystem TypeScript icon Node.js icon CSS icon HTML icon

    This monorepo included libraries, tools, and helpers that will make my life easier.

    Conventional commits Commitizen friendly

    • package - package name (e.g. @kcconfigs/tsconfig, @kcexamples/demo)
      • Use on package.json#name field and release-please/config.json#component field
    • component - package name without at(@) sign (e.g. kcconfigs/tsconfig)
      • Use on Git commit scope and Git tag prefix
    • package version || version - package version (e.g. 0.2.0, 1.2.3, 1.0.0-beta.1)
      • Use on package.json#version field
    • prerelease - package version contains prerelease identifier (e.g. 1.0.0-beta.1)
      • Similar to package version; more specific to prerelease only
    • prerelease number - number at the end of prerelease (e.g. 1, 2)
      • If package version is 1.0.0, then prerelease number is empty
      • If package version is 0.1.2-beta.2, then prerelease number is 2
    • Git tag || tag - Git tag string (e.g. kcconfigs/tsconfig+v1.2.3)
      • Syntax: <component>+v<version>
    • npm tag - npm tag string (e.g. latest, rc, beta, alpha)
      • Use with install package (e.g. npm install @kcconfigs/tsconfig@beta)
      • Node will use latest when not specify
    • [x] Support Pnpm monorepo
    • [X] Move @kc* to packages/@kc* to simplify number of directories
    • [X] Support run dts test using vitest
    • [X] Support test junit output (reports/test-results)
    • [X] Support test coverage output (reports/coverage)
    • [X] Support TypeDocs
    • [X] Support Biome
    • [X] Support commitlint && commitizen
    • [X] Support Git hooks via lefthook
    • [X] Support Superlinter and configured linters
    • [X] Support Megalinter and configured linters
    • [X] Support SonarQube Cloud
    • [ ] Support new package generator
    • [X] Automatically update dependencies via dependabot
    • [X] Automatically merge PRs via mergify
    • [ ] Automatically increase version using release-please
    • [ ] Set GitHub release to immutable
    • [X] tsconfig.json typeRoots didn't works when extends with package name
      • Workaround: using relative path (e.g. ./node_modules/xx/yy/zz.json)
    • [X] typedoc didn't works with @kcconfigs/tsdown; when dts resolve is true, no custom function is export; when it's false, only custom function is exported
    • [ ] release-please repository status (googleapis/release-please#2545)
    • [ ] right now you cannot convert prerelease to stable version easily (googleapis/release-please#2515)
      • Workaround 1: use release-as commit to force which version to deploy
      • Workaround 2: use multiple config (release-please-example)
      • Workaround 3: manually update manifest.json file to previous version
    • Clone or Fork repository from GitHub: git clone [email protected]/kc-workspace/kcws
    • Install Node.js using mise (or manual install based on mise.toml version)
    • Install Pnpm: corepack enable
    • Install dependencies: pnpm install
    • Build package: pnpm build:all (required for some internal commands)
    ## Build all packages
    pnpm build:all
    ## Test all packages
    pnpm test:all
    ## Fix lint and format on all packages
    pnpm fix:all
    ## Generate document html at ./docs folder
    pnpm docs:all
    ## Clean built folders
    pnpm clean

    Shared configuration for KC's projects (personal)

    Example project for testing and Proof of concept

    Internal packages specifically for @kc*/* packages

    Command-line tools for KC's projects (personal)

    TypeScript type definition utilities helper

    Generic packages for full-stack development (including both Frontend and Backend).