Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

webpack-simple

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

webpack-simple

Webpack Config - Simple defaults, extendable options

  • 1.7.3
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
41
increased by241.67%
Maintainers
1
Weekly downloads
 
Created
Source

Webpack Simple

Generates a webpack config with simple defaults and extendable options.

Build Status Coverage Status npm

Installation

Install as a dev dependency:

npm i -D webpack-simple

Basic Usage

Webpack is great, but the configuration is verbose. Webpack 4 improved things with a config-less setup, but as soon as you want something beyond the defaults you need an entire config. This package aims to give you the best of both worlds: a simple config, with the ability to configure just the parts you want.

// webpack.config.js
const { makeWebpackConfig } = require('webpack-simple');
module.exports = makeWebpackConfig();

That's it!

This will generate a webpack config in development mode, with Babel/React and css/sass loaders. It's the equivalent of:

const config = {
  mode: 'development',
  target: 'web',
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        exclude: [/.json$/, /node_modules/],
        use: [
          {
            loader: 'babel-loader',
            options: {
              presets: ['@babel/preset-env', '@babel/preset-react'],
              plugins: ['@babel/plugin-proposal-class-properties'],
            },
          },
        ],
      },
      {
        test: /\.s?css$/,
        use: [
          { loader: 'style-loader' },
          { loader: 'css-loader', options: { modules: true } },
          { loader: 'sass-loader' },
        ],
      },
    ],
  },
};

It's easy to add custom configuration:

const productionConfig = makeWebpackConfig({ mode: 'production' });
const nodeTargeted = makeWebpackConfig({ target: 'node' });
const otherEntryAndOutput = makeWebpackConfig({
  entry: './index.js',
  output: {
    path: path.join(__dirname, 'public'),
    file: 'bundle.js',
  },
});

You can add or overwrite entire module rules:

const { defaultWebpackRules } = require('webpack-simple');

const noBabelReactCSS = makeWebpackConfig({ rules: [] });
const includeOtherRules = makeWebpackConfig({
  rules: [...defaultWebpackRules, ...otherRules],
});

...or keep the above rules and just add/modify the default JS/CSS loaders:

const { makeJS, makeCSS } = require('webpack-simple');

const use = [{ loader: 'other-loader', options: { foo: 'bar' } }];

const js = makeJS({ use });
const css = makeCSS({ use });

const customJSConfig = makeWebpackConfig({ js });
const customCSSConfig = makeWebpackConfig({ css });

By default, makeJS and makeCSS will return the JS/CSS rules in the config above.

makeJS allows you to modify/override use, exclude, babelPresets, and babelPlugins.

const customJS = makeJS({ exclude: /testing/, babelPresets: 'some-preset' });

// customJS returns:
// {
//   test: /\.jsx?$/,
//   exclude: [/testing/],
//   use: [
//     {
//       loader: 'babel-loader',
//       options: {
//         presets: ['some-preset'],
//         plugins: ['@babel/plugin-proposal-class-properties'],
//       },
//     },
//   ],
// }

makeCSS allows you to modify/override use, cssLoaderOptions, and sassLoaderOptions.

const customCSS = makeCSS({ cssLoaderOptions: { foo: 'bar' } });

// customCSS returns:
// {
//   test: /\.s?css$/,
//   use: [
//     { loader: 'style-loader' },
//     { loader: 'css-loader', options: { foo: 'bar' } },
//     { loader: 'sass-loader' },
//   ],
// }

The full config input options with defaults:

makeWebpackConfig({
  js, // Defaults to JS rule above
  css, // Defaults to CSS rule above
  rules, // Defaults to rules above
  target = 'web',
  mode = 'development',

  // All top-level webpack config options are available
  // as input options (all default to undefined):

  node,
  entry, // Falls back to Webpack's default: '/src/index.js'
  output, // Falls back to Webpack's default '/dist/main.js'
  serve,
  stats,
  watch,
  devtool,
  resolve,
  plugins,
  externals,
  devServer,
  performance,
  experiments,
  watchOptions,
  optimization,
});

The full list of module exports:

module.exports = {
  makeWebpackConfig,
  makeJS,
  makeCSS,

  // Defaults provided so you can overwrite parts of them
  defaultWebpackRules,
  defaultBabelPlugins,
  defaultBabelPresets,
  defaultJSExclude,
  defaultJSUse,
  defaultCSSLoaderOptions,
  defaultCSSUse,
};

Keywords

FAQs

Package last updated on 06 Mar 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc