espresso
An experimental next-generation package registry, package manager, and toolchain for the JavaScript ecosystem.
Powered by Rust
Everything from the registry to the package managerespm
is written in and powered by Rust. Expect dependency installs in seconds, not minutes.ESM only, no CJS
Only packages written with ECMAScript modules will be publishable to the registry. No more CommonJS, conditional imports, or compatibility issues. It's time to move forward.New manifest and lockfile
Say goodbye topackage.json
, and all the headaches that come with it. No more exports
, imports
, module type
, peerDependencies
, and instead, say hello to esp.toml
.Integrated toolchain
Avoid the hassle of installing and configuring code formatters, linters, and typecheckers. With espresso, these are built-in and pre-configured with sane defaults, simplyespm lint
or espm format
to use them.For package consumers
Install dependencies for any runtime
JavaScript is unique in that it has multiple runtimes and environments that it runs in, so why shouldn't dependencies model this? With espresso, dependencies can be installed for Node, Bun, Deno, or a general vendor approach.Build dependencies on demand
Non-prebuilt packages within the registry will automatically be built when depended on, for a desired compilation target , using swc, a performant JavaScript compiler.Set compilation targets for dependencies
With our build-on-demand service, all installed package dependencies will be transformed to a target that meets your application requirements. Wantes2018
? Or maybe es2022
? The choice is yours!Host a private registry
Work for a company that wants to publish their internal packages to a private registry? Our registry is being built from the ground up to support self-hosting.For package authors
Package namespaces
All packages will require a unique namespace (similar to private scope). No global scoped packages, or package name squatting, and easier scoped configuration.Build pipelines
The days of pre-building packages before publishing is over. Stop fiddling with complex configurations and build pipelines, and instead simply publish source files and let the registry build it for you.Registry categories
Improve discoverability of your packages by categorizing them, and denoting which runtime they are intended for (Node, Deno, etc).Asset optimization
Our build pipeline will automatically copy assets and optimizepng
according to configured compression levels.TypeScript declarations
Generating TypeScript declarations can be non-trivial. With espresso, declarations will be created as part of the build pipeline, according to the configured compilation target (es2018
, etc).Current roadmap
August v0.1 - Workspace management & package building
- Manifest files (
esp.toml
) - Workspace (monorepo) support
- Topological package graph
- Package selection and filtering
- Package building (with swc)
- ESM only validation checks
- ES compilation targets
- TypeScript declaration generation
- Optimizing assets (
png
) espm build
commandespm init
commandespm new
command
September v0.2 - Package publishing
- Registry: OAuth APIs
- Registry: Package publishing endpoints
- Registry: Package building via agents/queues
- Categories and keywords
- JS runtime detection
- Namespace reserving
- Pre-publish validation checks
- Readme, changelog, and license support
- Release channels (stable, nightly, etc)
espm login
commandespm version
commandespm publish
command
October v0.3 - Dependency installation
- Lockfile format (
espm.lock
) - Dependency graph
- Dependency installation
- Version resolution
- Stand-alone vendor linker
- Node modules compatibility linker
espm install
commandespm add
commandespm remove
command
Learn more
Support the project
espresso is an experiment, a proof of concept. If there's enough interest and support, we'll keep working on it to fruition!
With that being said, help test and verify the ideas behind espresso!
Share your thoughts
We're looking to gather interest in espresso, and to document all the pain points you have with the current ecosystem and state of things. Please spend a few minutes answering this survey!
Join the waitlist
Want to reserve a namespace before the registry is publicly available? Be notified about major milestones? Or simply contribute in general?
A moonrepo, Inc. product. Copyright 2023.