Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 1.0 planning doc #231

Open
kenotron opened this issue Dec 12, 2022 · 0 comments
Open

Version 1.0 planning doc #231

kenotron opened this issue Dec 12, 2022 · 0 comments

Comments

@kenotron
Copy link
Member

Overview

workspace-tools had been used by some of the key monorepo scripts & tools that manage some of the large Microsoft JS projects. This library really came from merging tooling from these repos: backfill, beachball, just-scripts, and lage.

Problems of v0.x

The library has these characteristics & problems:

  • the library is a LOOSELY defined set of functions surrounding getting workspace information and related git operations
  • the additions to the library are mainly static functions, not classes
  • some functions attempt to do caching but without standard ways to invalidate cache
  • ALL functions are synchronous 👎🏼
  • packageInfos and workspaces are loosely used between different functions as the "state" to be passed between functions - these are not used consistently

Proposal

Goals

  1. API surface should be designed ahead of time before implementation
  2. No external dependencies (lockfiles implementation, etc. should be implemented JUST enough to gather the information needed)
  3. Prefer library calls over spawning processes
  4. Asynchronous and Synchronous API surface
  5. Leverage NAPI if it makes the operation fast
  6. Split repo into monorepo to clearly delineate different aspects of workspace-tools - e.g. git, lockfile, filtering (Split workspace-tools package #229)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant