Files
webamp/packages/webamp/README.md
T
Jordan EldredgeandClaude Opus 4.6 c7a282c1fd Split demo site into its own package (#1351)
* Split demo site into its own package

Move the demo site from packages/webamp/demo/ into packages/webamp-demo/
as a standalone workspace package. This cleanly separates the library
(published to npm) from the demo site (deployed to webamp.org).

Key changes:
- Demo imports webamp source via relative paths (no aliases needed)
- Demo has its own package.json with demo-specific deps
- Simplified vite config (just nodePolyfills plugin)
- Removed vite branching from rollupPlugins.mjs (library-only now)
- Renamed build-library -> build in webamp package
- Updated turbo.json, CI, netlify config, and code-size workflow
- Removed demo-only deps from webamp package (sentry, butterchurn stays
  for the butterchurn bundle)
- Zero bundle size change for the library

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* Fix: add type-check dependency to webamp#build task

The webamp-docs package needs type declarations from webamp to
type-check. These are generated by tsc (type-check), which must run
before the build task.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* Add updated readme to webamp-demo package

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* Document the live reloading dev flow in both readmes

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* Fix code-size CI: use deploy script that exists on both branches

The compressed-size-action checks out master and runs the build script.
Master doesn't have a root "build" script, so revert to using "deploy"
which exists on both branches.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>
2026-06-07 14:40:07 -07:00

3.4 KiB

Webamp NPM Module

Development

The demo site in packages/webamp-demo imports the library source directly, so you can iterate on the library with live reloading:

cd packages/webamp-demo
pnpm start

Any edits to library source files in packages/webamp/js/ are immediately reflected in the browser — no rebuild needed.

# Run tests
cd packages/webamp
pnpm test

Building

To build the library for publishing:

pnpm run build

This will write files to ./built.

Testing

pnpm test

This will run the tests the linter and the type checker.

To update snapshots run

pnpm test -u

Cutting a Release

  1. Update the version number in package.json
  2. Rename the "Next" title at the top of CHANGELOG.md to the new version number and ensure it is up to date
  3. Update the static VERSION property of the Webamp class in webampLazy.tsx
  4. Git commit
  5. cd packages/webamp
  6. npm publish
  7. Git tag the commit (e.g. 1.4.2 or 1.4.3-beta.3)
  8. Push tag to GitHub git push origin <TAG_NAME>
  9. Update all the examples to use the new version:
  1. Commit and push

Reference

Predecessors

  • Webamp2x An impressive implementation from 2002(!).
  • JsAmp An implementation from 2005 by @twm (via Hacker News).
  • LlamaCloud Comp From 2011 by Lee Martin (via Twitter)
  • Winamp em HTML5 e Javascript In 2010 a developer named Danilo posted one of his HTML5 experiments: "an audio player simulating good old Winamp". You will have to download the zip file.
  • JuicyDrop An HTML5 implementation with less emphasis on being true to the skin, but fully featured visualizations. @cggaurav is keeping it alive on GitHub
  • Spotiamp The folks at Spotify reimplemented Winamp as a frontend for Spotify. Not in a browser, and only runs on Windows. It has since been discontinued.