npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

reduce-webpack

v1.2.0

Published

Provide a zero-config webpack experience for common app setups

Downloads

97

Readme

reduce-webpack

Provide a zero-config webpack experience for common app setups

Who is this for?

Those who:

  • Are tired of copying over webpack configs to other projects
  • Don't enjoy fiddling with / installing npm modules for webpack
  • Use standard webpack practices
  • Want a conventional config for webpack as a plain object, that's extensible to fit any project
  • Like smart defaults
  • Prefer less npm dependencies

Current Version

v1.0.3

Platforms / Technologies

Works with everything* / 100% conventional webpack

  • Blazing Fast 🚀
  • Zero config 📄
  • TypeScript 💜
  • ESLint 🤝
  • React ⚛️
  • Styled Components :nail_care:
  • FP-TS ➕
  • Jest 🃏
  • Tape 🖭
  • Express 🌠
  • Simple HTML file file templates 😀 (using lodash templates - see HtmlWebpackPlugin)
  • Supports static folder 🎓
  • Supports images/fonts 📦
  • Hot Module Reloading (HMR) ⚡

Install

  $ npm install reduce-webpack --save-dev

Setup and Usage

For quick project templates, see examples

Basic

Your project needs a webpack.config.ts (must install ts-node) or webpack.config.js in your root folder:

import reduceWebpack from 'reduce-webpack';

export default reduceWebpack({},'someVersionNumberYouWantToShowInHTML',__dirname);

Then in your package.json, you can add:

{
	"scripts": {
		"build": "webpack"
	}
}

Customizing

Your can use the resulting config and customize any aspect of it as needed:

import reduceWebpack from 'reduce-webpack';

const baseConfig = reduceWebpack({},'someVersionNumberYouWantToShowInHTML',__dirname);

// here we might want to customize the config to support more file extensions
export default {
	...baseConfig,
	resolve: {
		extensions: ['.json', '.js', '.ts', '.tsx', '.jsx', '.wasm', '.mjs']
	}
};

Definitions

You can optionally add definitions that will be sent to the webpack DefinePlugin

import reduceWebpack from 'reduce-webpack';

 // create custom variable rewrites using the webpack DefinePlugin
const DEFINITIONS = {
	__SOME_VAR__: JSON.stringify('World!!')
};

export default reduceWebpack(
	DEFINITIONS,
	'someVersion',
	__dirname
);

Production Build

The build step looks for NODE_ENV and will run the production webpack rules if NODE_ENV=production.

A folder called dist will be created, with a subfolder called public, which is the root directory to be hosted by your static file server, GitHub page or Express app.

[your project]/dist/public/index.html <--- serve this file

Dev Server

Every other NODE_ENV not equal to production is treated as a development build, which spins up a webpack-hot-middleware client.

With an Express server

This client can easily be attached to your existing server with Express middleware, see examples/with-express-server.

As a standalone SPA app

If you instead wanted to just use the webpack-dev-server, see examples/with-dev-server.