webamp/packages/webamp
2025-07-14 17:06:30 -07:00
..
assets/skins Move non-base skins into demo directory 2020-07-04 11:21:20 -07:00
config Type winamp-eqf 2025-07-06 17:17:55 -07:00
css Revive compile skin script and convert to typescript 2025-07-09 13:25:06 -07:00
demo Unfork butterchurn 2025-07-12 23:46:54 -07:00
docs Docs improvements 2025-06-22 20:32:36 -07:00
js Version 2.2.0 release 2025-07-14 16:58:20 -07:00
presets Start adopting Yarn workspaces (#985) 2020-05-17 22:12:17 -07:00
scripts Revive compile skin script and convert to typescript 2025-07-09 13:25:06 -07:00
.babelrc Don't transform object spread 2024-05-07 16:11:35 -07:00
.eslintignore Fix slow lint 2025-07-06 10:36:46 -07:00
.eslintrc Clean up create-react-app cruft 2025-07-06 18:12:50 -07:00
.gitignore Optimize ci performance (#1302) 2025-07-05 18:12:42 -07:00
.prettierignore Add back google analytics 2023-01-25 12:15:15 -08:00
CHANGELOG.md Update docs 2025-07-12 23:44:21 -07:00
jest-puppeteer.config.js First attempt at adopting Parcel (#1186) 2023-01-20 11:15:39 -08:00
package.json Ignore dist in built 2025-07-14 17:06:30 -07:00
postcss.config.mjs Avoid commonjs warning in vite 2025-07-05 16:05:58 -07:00
README.md Migrate from yarn to pnpm (#1303) 2025-07-06 15:45:44 -07:00
static.d.ts Start adopting Yarn workspaces (#985) 2020-05-17 22:12:17 -07:00
tsconfig.json Switch back to streaming parsing of id3s 2025-07-05 16:17:03 -07:00
vite.config.mts We know we have big chunks 2025-07-06 10:43:31 -07:00

Webamp NPM Module

Development

I do most development by starting the demo site in dev mode and iterating that way. The following commands will install all dependencies, run an initial development build and then start a local server. Every time you save a file, it will rebuild the bundle and automatically refresh the page.

# First clone the repo, then...
cd webamp
# Change into the NPM module's sub directory
cd packages/webamp
# __Note:__ Please use pnpm over npm/yarn, since pnpm will respect our `pnpm-lock.yaml` file
pnpm install
pnpm start

http://localhost:8080/ should automatically open in your browser.

# Run tests and lint checks
pnpm test

Building

The NPM module is built separately from the demo site. To build it run:

pnpm run build-library

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.