New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

webpack-config-react

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

webpack-config-react

A bare, modern Webpack 5 config to create a react app without create-react-app. Not battery included!

latest
Source
npmnpm
Version
0.2.0
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

webpack-config-react

A bare, modern Webpack 5 config to create a react app without create-react-app. Not battery included!

Note: This package is only for those who are experienced with web bundling, transpilation (eg. @babel/preset-env), optimization, since it comes with no opinionated configuration out of the box. If you are a beginner, it's better to stick with create-react-app or use Next.js.

Features

Installation

npm i --save-dev webpack-config-react webpack webpack-cli webpack-dev-server

Usage

package.json scripts

Add the following scripts to your package.json:

{
  "scripts": {
    "build": "webpack --mode=production",
    "dev": "webpack serve"
  }
}

To serve the built app, you can use sirv-cli:

{
  "scripts": {
    "start": "sirv build"
  }
}

Create React App Deployment article also helps since this config also outputs file to build (by defaults).

webpack.config.js

Create webpack.config.js:

const { createConfig } = require("webpack-config-react");

module.exports = async (env, argv) => {
  const webpackConfig = await createConfig(
    argv.mode === "production" || env.production
  );
  return webpackConfig;
};

To extend webpack-config-react, we can use webpack-merge to merge additional configs into the return value of await createConfig().

npm i --save-dev webpack-merge

See examples for some usages.

Up next, depending on your preferences and requirements, we can either use babel or swc.

With babel

Example

Install dependencies:

npm i --save-dev @babel/core @babel/preset-env @babel/preset-react babel-loader

Create babel.config.json (or other formats)

{
  "presets": [
    ["@babel/preset-env"],
    ["@babel/preset-react", { "runtime": "automatic" }]
  ]
}

With swc

Example

Install dependencies:

npm i --save-dev @swc/core swc-loader

Create .swcrc:

{
  "jsc": {
    "parser": {
      "syntax": "ecmascript",
      "jsx": true
    },
    "transform": {
      "react": {
        "runtime": "automatic"
      }
    }
  }
}

Aiming to be simple, this does not include configs that are helpful to development. The following shows how to re-enable them.

Source map

source-map-loader

module.exports = async (env, argv) => {
  const isEnvProduction = argv.mode === "production" || env.production;
  const webpackConfig = await createConfig(isEnvProduction);
  return merge(webpackConfig, {
    devtool: isEnvProduction ? "source-map" : "eval-source-map",
    module: {
      rules: [
        {
          test: /\.(js|mjs|jsx|ts|tsx|css)$/,
          exclude: /@babel(?:\/|\\{1,2})runtime/,
          enforce: "pre",
          use: ["source-map-loader"],
        },
      ],
    },
  });
};

Configurations

An options param can passed as the second argument to createConfig.

createConfig(isEnvProduction, options);
  • moduleFileExtensions: A list of module file extension to resolve. Default: ["web.mjs","mjs","web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx"].
  • pathEntry: Path to entry file. Default: ./src/index.js.
  • pathSrc: Path to src directory (will be proccessed by babel-loader/swc-loader). Default: ./src.
  • pathHtml: Path to HTML file. Default: ./public/index.html.
  • pathBuild: Path to build output directory. Default: ./build.
  • pathPublic: Path to "public" folder (will be copied to build directory). Default: ./public.

Keywords

react

FAQs

Package last updated on 08 Feb 2022

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