Skip to content

hcoona/three

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Three

My polyglot monorepo. It keeps the projects I rely on most under a single roof so I can share tooling, manage dependencies consistently, and clone everything in one go.

Why this repo exists

Maintaining several language stacks across scattered repositories was slowing me down. Consolidating them here lets me:

  • reuse the same CI, release, and security policies;
  • version cross-cutting assets together;
  • archive upstream code (including Git LFS objects) so future clones depend on this repo only.

What’s with the name?

The first two pillars were OnePython and OneDotNet. Adding the rest of my “other” projects made it a trio, hence Three = OnePython + OneDotNet + Others. In Daoist philosophy, “三生万物” (“Three begets all things”) symbolizes how diversity emerges from a balanced trio—exactly how this monorepo grows.

Projects included

Project Directory Upstream Commit
Asciidoctor LaTeXMath src/public/lib/asciidoctor-latexmath/ Repo 514d685
ImageOcclusionEditor src/public/app/ImageOcclusionEditor/ Repo e08f834
OneDotNet OneDotNet/ Repo 17f2224
OnePython OnePython/ Repo 21ef6d5
Steam Account History to CSV src/public/lib/steam-account-history-to-csv/ Repo b759a52
Hexo Renderer AsciiDoc src/public/lib/hexo-renderer-asciidoc/ Repo d98f8d5

JavaScript/pnpm workspace

The src/public/lib/hexo-renderer-asciidoc/ and src/public/lib/steam-account-history-to-csv/ folders share a pnpm workspace that still lives at the repo root even though the projects moved under src/public/lib/. The nested layout keeps the repo top level tidy while preserving predictable dependency resolution (sharedWorkspaceLockfile: true) and automatic linking between workspace packages (linkWorkspacePackages: true). As before, the workspace does not pin a Node version—each package’s own engines entry (Hexo still wants Node ≥ 20.19) remains authoritative.

Development flow:

  1. Enable Corepack (once per machine) so the packageManager setting can download pnpm for you.
  2. From the repo root, run pnpm install to hydrate every workspace project and refresh the single pnpm-lock.yaml.
  3. Use the root scripts from package.json:
    • pnpm run build → runs build in every workspace package.
    • pnpm run test / pnpm run lint / pnpm run format → fan out with --if-present, so packages missing a script are skipped.
  4. When pnpm warns about blocked install scripts (for example hexo-util), review and allow them with pnpm approve-builds to stay compliant with pnpm 10’s hardened defaults.

For publishing/versioning, follow pnpm’s Changesets guide so both packages can share a single release workflow.

Each subtree was imported with git subtree add --squash, so future pulls can use git subtree pull --prefix=<dir> <remote> main --squash to stay in sync.

About

My polyglot monorepo.

Topics

Resources

License

Unknown and 2 other licenses found

Licenses found

Unknown
LICENSE
GPL-3.0
COPYING
LGPL-3.0
COPYING.LESSER

Stars

Watchers

Forks

Contributors 2

  •  
  •