- Notifications
You must be signed in to change notification settings - Fork323
A toolkit for React, Preact, Inferno & vanilla JS apps, React libraries and other npm modules for the web, with no configuration (until you need it)
License
insin/nwb
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
TL;DR: useVite!
nwb was created at a time when JavaScript tooling was in flux, when the capabilities of ES6 were less widely-supported by browsers than they are today, and when versions of Webpack, Babel and other common build tools were out of date almost as soon as you added them to your package.json, and there wasn't even a create-react-app yet!
People who were adopting these tools ended up having to independently manage the same sets of dependencies and configure them to work together to create a great local development experience, a solid testing setup and optimised production builds.
The goal of nwb was to take the weight of managing theseoff the shoulders of developers, and instead provide a configuration file exposing a smaller surface area for the configuration needed to tweak the things which were specific to your project.
At this point in time, years later than we should have formally announced nwb's deprecation,Vite is one of the best implementations of that goal there is.
It's massively popular, widely-used, and it's likely that every plugin you need for your use case has already likely written, and if not, there's an API for that, which is so good that high-quality frameworks now build on top of Vite, such asAstro for static site generation (and on-demand server rendering) andReact Router for client and/or server rendered React apps.
Web Application frameworks likeHono also provide official plugins to integrate with Vite's development server if you just need to create a server which serves up a client app and provide authentication and API endpoints, while retaining Vite's fantastic developer experience.
Vite also comes with a fantastic testing framework inVitest which integrates directly with Vite, rather than the hodge-podge of different configs we used to have to deal with to get the likes of Karma sucessfully using the same build tooling as the rest of our development process (IYKYK).
In summary:
Starting a new React/Preact etc. project today? Possibly even your first project?
UseVite. Therewill be a plugin and a project template for whatever you want to use.
Have an old project which used something like nwb or create-react-app?
Migrate toVite. It's not going to be painless, but it's going to be better. I've done it. You can do it.
Starting a new project which needs client rendering? Server rendering?
UseVite. There's a plugin or maybe even a framework built on Vite for that. Don't take on more complexity than you need. Don't fight with a framework intended for server rendering if that's not what you need.
Thanks for using nwb!
-- Jonny
nwb is a toolkit for:
A zero-config development setup is provided, but nwb also supportsconfiguration andplugin modules which add extra functionality (e.g.Sass support), should you need them
Installing globally provides annwb command for quick development and working with projects.
npm install -g nwb
Note: if you're using npm 5 and getting an
EACCES: permission deniederror from nwb's PhantomJS dependency while installing globally, try passing an--unsafe-permflag:
npm install -g --unsafe-perm nwb
To use nwb's tooling in a project, install it as adevDependency and usenwb commands inpackage.json"scripts":
npm install --save-dev nwb
{"scripts": {"start":"nwb serve-react-app","build":"nwb build-react-app" }}For quick development withReact,Inferno,Preact or vanilla JavaScript, use thenwb react,nwb inferno,nwb preact ornwb webcommands.
importReact,{Component}from'react'exportdefaultclassAppextendsComponent{render(){return<h1>Hello world!</h1>}}
$ nwb react run app.js✔ Installing react and react-domStarting Webpack compilation...Compiled successfullyin 5033 ms.The app is running at http://localhost:3000/$ nwb react build app.js✔ Building React appFile size after gzip: dist\app.cff417a3.js 46.72 KBSeeQuick Development with nwb for a more detailed guide.
Usenwb new react-app to create aReact app skeleton, preconfigured with npm scripts which usenwb for development:
nwb new react-app my-appcd my-app/npm startOpenlocalhost:3000, start editing the code and changes will be hot-reloaded into the running app.
npm test will run the app's tests andnpm run build will create a production build.
SeeDeveloping React Apps with nwb for a more detailed guide.
Usenwb new preact-app to create aPreact app skeleton:
nwb new preact-app my-app
Usenwb new inferno-app to create anInferno app skeleton:
nwb new inferno-app my-app
Usenwb new web-app to create a vanilla JavaScript app skeleton:
nwb new web-app my-app
nwb new react-component my-componentcd my-component/npm start will run a demo app you can use to develop your component or library against.
npm test will run the project's tests andnpm run build will create ES5, ES modules and UMD builds for publishing to npm.
SeeDeveloping React Components and Libraries with nwb for a more detailed guide.
nwb new web-module my-modulecd my-module/npm test will run the project's tests andnpm run build will create ES5, ES modules and UMD builds for publishing to npm.
- Quick Development with nwb
- Developing React Apps with nwb
- Developing React Components and Libraries with nwb
Get started quickly. Start developing from a single.js file orgenerate a project skeleton.
Covers the whole development cycle. Development tools, testing and production builds for projects work out of the box, no configuration required.
Flexible. While everything works out of the box, you can also use an optionalconfiguration file to tweak things to your liking.
Manages key development dependencies and configuration for you. Check out anexample of the effect using nwb had on the amount ofdevDependencies and configuration to be managed in a real project it was dropped into.
Cover image created byGeorgioWan
Operating system icons created withIcons8
About
A toolkit for React, Preact, Inferno & vanilla JS apps, React libraries and other npm modules for the web, with no configuration (until you need it)
Topics
Resources
License
Contributing
Uh oh!
There was an error while loading.Please reload this page.






