A no-build JavaScript CDN for modern web development.
# esm.sh
A _no-build_ JavaScript CDN for modern web development.
## Project Structure
- `cli/`: Command-line interface (releases as the npm `esm.sh` CLI).
- `internal/`: Go packages for import maps, NPM resolution, storage, and module replacements.
- `server/`: Main HTTP service: request handling, bundling, and CDN behavior.
- `test/`: Deno-based integration suites; each subdirectory exercises imports against a running server (`test/.template` is the scaffold for new cases).
## Running the Server in Debug Mode
```bash
make run/server
```
Then you can import modules from `http://localhost:8080/<package>[@<version>][/<path>][?<query>]` in browser/Deno.
More usage examples can be found in the [README](./README.md).
## Running Server Integration Tests
We use [Deno](https://deno.land) to run all the integration testing cases. Make sure you have Deno installed on your computer.
```bash
# Run all tests
make test/server
# Run a specific test
make test/server dir=react-18
```
To add a new integration test case, copy the [test/.template](./test/.template) directory and rename it to your case name.
```bash
# copy the testing template
cp -r test/.template test/test-case-name
# edit the test code
vi test/test-case-name/test.ts
# run the test
make test/server dir=test-case-name
```
## Running Server Unit Tests
```bash
go test ./server/...
```
## CDN
The project has been deployed to https://esm.sh.
- https://esm.sh/status.json: CDN status.
- https://esm.sh/<package>[@<version>][/<path>][?<query>]: CDN URL for the package.