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

webpacker

v4.6.0

Published

Webpack configuration manager

Downloads

463

Readme

webpacker

Build Status Coverage Status

Webpack configuration manager

Motivation

Setting up webpack with a bunch of plugins and environments every time you start a new project can be time consuming and often confusing. Webpacker aims to provide you with an easy way to use standard webpack configurations without the hassle of setting them up yourself all the time.

Installation

npm i --save-dev webpacker

Usage

Commands

For now there are 3 commands you can use.

  • webpacker serve => Webpacker will serve your project for development purposes.
  • webpacker build => Webpacker will build your project and output it to a folder.
  • webpacker stats => Webpacker will build your project and output it to a folder and it will open a browser window with information about your bundle sizes.

Loaders

|Name|Additional parameters allowed|Description| |:--|:---|:---| |css|{env, postcssOpts}|Loads a CSS file| |cyclejs|{excludePattern, plugins, presets}|A functional and reactive JavaScript framework for predictable code. Uses babel-loader| |graphql|{excludePattern}|A query language for your API| |react|{excludePattern, plugins, presets}|A JavaScript library for building user interfaces. Uses babel-loader| |typescript|{excludePattern, transpileOnly, tsconfigPath}|TypeScript loader for webpack. Uses ts-loader| |scss|{env, scssVariables, postcssOpts}|Loads a Sass/SCSS file and compiles it to CSS.| |utils|{env, postcssOpts}|An aggregation of postcss-loader, url-loader and style-loader|

Plugins

|Name|Additional parameters allowed|Description| |:--|:---|:---| |configure|{env, constants}|Shorthand for using the DefinePlugin on process.env keys| |copy|{copy}|Copies individual files or entire directories to the build directory| |clean|{dry, cleanStaleWebpackAssets, protectWebpackAssets}|A webpack plugin to remove/clean your build folder(s)| |css|{devServer}|It creates a CSS file per JS file which contains CSS. It supports On-Demand-Loading of CSS and SourceMaps| |favicon|{cwd, logo}|Allows to use the favicons generator with webpack| |html|{cwd, index}|Plugin that simplifies creation of HTML files to serve your bundles| |stats||Visualize size of webpack output files with an interactive zoomable treemap| |compress|{devServer}|Prepare compressed versions of assets| |lodash|opts|Treeshaking plugin for lodash-es| |forkTsChecker|{tsconfigPath}|Webpack plugin that runs TypeScript type checker on a separate process.|

Dotfile

To provide configuration to webpacker, you'll need to add a .webpacker.js file in the root of your project. The location of the config file can be changed by passing --config path/to/my/file.js when running webpacker.

The .webpacker.js file needs to export an object with at least the preset key.

Preset

The preset defines which loaders and plugins will be used. If the loader or plugin you need is not available, please submit an issue or a PR.

To provide a consistent way of providing arguments to the loaders and plugins, 2 functions are available to help: setLoader and setPlugin.

These functions can be called with the name of the plugin/loader as the first argument and with optional additional arguments as the second.

For a list of available loaders, please check ./loaders/index.js. For a list of available plugins, please check ./plugins/index.js.

Other options

The following options can be adjusted by returning them as a key in .webpacker.js. The options should be functions and their only argument is the function that webpacker itself uses internally. You can choose to call this given function and extend on its return value, or choose to not use the function and return a value of your choosing (refer to the documentation of each option to see what has to be returned).

devServer

devServer is used to define options for webpack-dev-server, which is used when running webpacker serve.

entry

entry is for webpack's entry option. By default its value is ./src/index.js.

output

output is for webpack's output option.

devtool

devtool is for webpack's devtool option.

Example file

const path = require('path');
const {setLoader, setPlugin} = require('webpacker/utils');
const constants = require(`./config/${process.env.NODE_ENV || 'development'}`);

module.exports = {
  output: fn => fn({path: path.join(__dirname, 'build')}),
  preset: {
    loaders: [
      setLoader('react'),
      setLoader('typescript'),
      setLoader('css'),
      setLoader('scss'),
    ],
    plugins: [
      setPlugin('configure', {constants}),
      setPlugin('css'),
      setPlugin('favicon', {logo: './public/img/streamline.svg'}),
      setPlugin('html'),
    ],
  }
};

Samples

Help us

Support us by giving feedback, opening a pull request or just by starring the project!

License

ISC