WMR

March 19, 2024 ยท View on GitHub

Warning

WMR is unfortunately no longer maintained. In its place, we'd recommend Vite with @preactjs/preset-vite. It offers many of the same features (like the prerendering API) but is much more robust and up to date. Thanks to all contributors and users over the years!

wmr logo

npm install size OpenCollective Backers OpenCollective Sponsors

The tiny all-in-one development tool for modern web apps, in a single 2mb file with no dependencies.

All the features you'd expect and more, from development to production:

๐Ÿ”จ ย  No entry points or pages to configure - just HTML files with <script type=module>
๐Ÿฆฆ ย  Safely import "packages" from npm without installation
๐Ÿ“ฆ ย  Smart bundling and caching for npm dependencies
โ†ป ย  Hot reloading for modules, Preact components and CSS
โšก๏ธ ย  Lightning-fast JSX support that you can debug in the browser
๐Ÿ’„ ย  Import CSS files and CSS Modules (*.module.css)
๐Ÿ”ฉ ย  Out-of-the-box support for TypeScript
๐Ÿ“‚ ย  Static file serving with hot reloading of CSS and images
๐Ÿ—œ ย  Highly optimized Rollup-based production output (wmr build)
๐Ÿ“‘ ย  Crawls and pre-renders your app's pages to static HTML at build time
๐ŸŽ ย  Built-in HTTP2 in dev and prod (wmr serve --http2)
๐Ÿ”ง ย  Supports Rollup plugins, even in development where Rollup isn't used

Create a new project in seconds using create-wmr:

npm init wmr your-project-name

or

yarn create wmr your-project-name

illustration of installation to build for wmr

๐Ÿ’ If you'd like ESLint to be set up for you, add --eslint to the command. Note: this will use 150mb of disk space.

Check out the docs to learn more

Packages

PackageDescriptionVersion
wmrTiny all-in-one development tool for modern web appswmr npm
create-wmrCreate a new WMR project in secondscreate-wmr npm
@wmrjs/directory-importImport a directory's files as an Array@wmrjs/directory-import npm
@wmrjs/nomoduleGenerate legacy fallback bundles for older browsers@wmrjs/nomodule npm
@wmrjs/service-workerBundle service workers@wmrjs/service-worker npm
preact-isoOptimal code-splitting, hydration and routing for Preactpreact-iso npm

Contributing

git clone git@github.com:preactjs/wmr.git
cd wmr
yarn

# run the demo (no compile)
yarn demo serve

# build and serve the demo for prod
yarn demo build:prod && yarn demo serve:prod

# build the single-file CLI:
yarn workspace wmr build

Adding a changeset

Don't forget to also include a changeset, by running this command at the root of the project:

yarn changeset

This will take you through a process of selecting the changed packages, the version updates and a description of the change. Afterwards, changesets, will generate a .md file inside a .changeset directory. Please commit that file as well.

After all that, you are good to go. :+1: