{"id":24664575,"url":"https://github.com/qinsong77/sysuke","last_synced_at":"2026-01-27T14:33:29.893Z","repository":{"id":193829921,"uuid":"519862954","full_name":"qinsong77/sysuke","owner":"qinsong77","description":"Mine monorepo, powered by pnpm workspace and turboprop.","archived":false,"fork":false,"pushed_at":"2024-11-16T11:06:54.000Z","size":4226,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T02:42:00.898Z","etag":null,"topics":["changesets","monorepo","pnpm-monorepo","pnpm-workspace","tsup","turborepo"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qinsong77.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-31T18:59:16.000Z","updated_at":"2024-11-16T11:06:58.000Z","dependencies_parsed_at":"2025-03-21T09:43:03.199Z","dependency_job_id":"cd23d3c5-3bd4-4903-affa-7fcc8b52a4d4","html_url":"https://github.com/qinsong77/sysuke","commit_stats":null,"previous_names":["qinsong77/sysuke"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/qinsong77/sysuke","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qinsong77%2Fsysuke","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qinsong77%2Fsysuke/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qinsong77%2Fsysuke/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qinsong77%2Fsysuke/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qinsong77","download_url":"https://codeload.github.com/qinsong77/sysuke/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qinsong77%2Fsysuke/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28815113,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T12:25:15.069Z","status":"ssl_error","status_checked_at":"2026-01-27T12:25:05.297Z","response_time":168,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["changesets","monorepo","pnpm-monorepo","pnpm-workspace","tsup","turborepo"],"created_at":"2025-01-26T06:13:32.847Z","updated_at":"2026-01-27T14:33:29.878Z","avatar_url":"https://github.com/qinsong77.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sysuke\n\nMine monorepo, powered by `pnpm workspace` and [turboprop](https://turbo.build/repo/docs).\n\nRefer this: [MonoRepo by pnpm workspace + TurboRepo](https://www.sysuke.com/blog/architecture/monorepoPnpmTurboRepo.html)\n\n## rules\n\ncommon package install root, including shared internal config packages, including:\n\n- `@sysuke/typescript-config`\n- `@sysuke/eslint-config`\n\n## todo\n\n- lint-staged tsc\n- Adjust sort list for [prettier-plugin-sort-imports](https://github.com/trivago/prettier-plugin-sort-imports)\n- ~~eslint or Biome~~, currently using eslint, but DX is not so good. but Biome doesn’t support monorepos very well due to some limitations in resolving nested configuration files\n- ~~turborepo~~\n- ui library\n- ~~web~~\n- RN/Expo, reference: [expo-monorepo-example](https://github.com/byCedric/expo-monorepo-example#pnpm-workarounds)\n- the process to publish package by changesets\n\n1. changesets + github action to publish npm packages\n2. ui package\n3. trpc: hono + vite react example\n4. refactor eslint\n5. check docker\n\n## Changeset process\n\n1. run `pnpm changeset`: select packages and version(major, minor, patch), will generate `.md` files.\n2. run `pnpm version-packages` = `pnpm changeset version`: use files generated by last step, update or generate `CHANGELOG.md`, update version on `package.json`\n3. run `pnpm release`\n\nAbove steps are the process to publish package on Local.\nFor CI with github action: [`changesets/action@v1`](https://github.com/changesets/action), only need to run `pnpm changeset` and push code. Action will create PR and publish package to npm.\n\n~~`.changeset/config.json` 中的 `commit: true` is for local, for CI, because `changeset version` is executed in github action. so `changesets/action@v1` config will override it.~~\n\nSo for the repo itself, just need run `changeset` and push code.\n\n### Prereleases\n\nRefer: [Changeset Prereleases doc](https://github.com/changesets/changesets/blob/main/docs/prereleases.md)\n\nDo it on local, eg: beta\n\n```shell\nchangeset pre enter beta\nchangeset\nchangeset version\nturbo build --filter=@sysuke\npnpm changeset publish\n```\n\nwe can run many times for above 2-4 steps, after done, run:\n`pnpm changeset pre exit`\n\n## Common scripts\n\n- install package in root\n\n```shell\npnpm install typescript -w\n# install to root devDependencies\npnpm install typescript -w -D\n# or\npnpm add prettier-plugin-tailwindcss -Dw\n```\n\n- install a npm `package` for one package/app individually: `--filter=pkg`\n\n```shell\npnpm add axios --filter=@apps/web\n```\n\n- install `pkg1` into `pkg2`, internal refer\n\n```shell\npnpm install @sysuke/pkg1 --filter=@sysuke/pkg2\n```\n\n## Might use\n\n- [syncpack](https://jamiemason.github.io/syncpack/guide/getting-started/) a command-line tool to manage multiple package.json files;\n- [oxc](https://oxc-project.github.io/) oxlint =\u003e [Biome](https://biomejs.dev/): Format, lint, and more in a fraction of\n  a second. - TBD\n- [Sherif](https://github.com/QuiiBz/sherif) - Opinionated, zero-config linter for JavaScript monorepos\n\n## Notes\n\n- no need to add `tsconfig.json` in the root, [refer](https://turbo.build/repo/docs/guides/tools/typescript#you-likely-dont-need-a-tsconfigjson-file-in-the-root-of-your-project)\n\n## Trivial\n\n### commit\n\nfollow commitlint [rule](https://commitlint.js.org/reference/rules.html)\n\n### npm registry\n\n```shell\nnpm install nrm -g\n## check all registry\nnrm ls\n## switch\nnpx nrm use npm\n## confirm\nnpm config ls\n```\n\n### manage npm package\n\n- unpublish/remove package\n\n```shell\nnpm unpublish  @sysuke/eslint-config-react --force\n```\n\n## Refer\n\n- [turbo](https://turbo.build/repo/docs)\n- [turborepo-example](https://github.com/vercel/turborepo/tree/main/examples)\n- [arno-packages](https://github.com/SurfaceW/arno-packages)\n- [nextui](https://github.com/nextui-org/nextui)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqinsong77%2Fsysuke","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqinsong77%2Fsysuke","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqinsong77%2Fsysuke/lists"}