Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Librarian

Librarian is a powerful tool for managing multiple isolated npm package workspaces per tenant. It provides safe addition, removal, and listing of packages and registries, ensuring no conflicts through file-based locking.

Features

  • Manage multiple tenants with isolated workspaces.
  • Add, remove, and list npm packages.
  • Add and list multiple registries.
  • Automatic cleanup of unused dependencies.
  • File-based locking to prevent concurrent conflicts.
  • Caching of npm packages for faster installations.

Installation

Clone the repository and install dependencies:

npm install johanlabs-librarian

Usage

Import and initialize Librarian:

import { Librarian } from 'johanlabs-librarian';

const librarian = new Librarian({ path: '/path/to/workspaces' });

Managing Tenants

Access a specific tenant:

const tenant = librarian.tenant('tenant1');

Registries

Add a registry:

tenant.addRegistry({ type: 'npm', url: 'https://registry.npmjs.org/' });

List registries:

console.log(tenant.listRegistry());

Packages

Add a package:

await tenant.addPackage({ name: 'lodash', version: '^4.17.21' });

List installed packages:

console.log(tenant.listPackages());

Remove a package:

await tenant.removePackage('lodash');

File-based Locking

Operations that modify the workspace use locks automatically to prevent conflicts between concurrent processes.

Project Structure

  • src/Librarian.ts: Main class to access tenants.
  • src/Tenant.ts: Represents an isolated tenant workspace.
  • src/package/PackageStore.ts: Manages package addition, removal, and installation.
  • src/package/PackageCleaner.ts: Cleans up unused dependencies.
  • src/registry/RegistryManager.ts: Manages registries and writes .npmrc.
  • src/lock/TenantLock.ts: Implements file-based locking for safe concurrent operations.
  • src/types.ts: TypeScript interfaces and types.
  • src/index.ts: Entry point exporting the main Librarian class.

Scripts

  • npm run build: Compiles TypeScript to JavaScript.
  • npm test: Placeholder for tests.

Contributing

Contributions are welcome! Please fork the repository and submit a pull request with your improvements.

License

MIT License

About

Librarian is a powerful tool for managing multiple isolated npm package workspaces per tenant. It provides safe addition, removal, and listing of packages and registries, ensuring no conflicts through file-based locking.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages