9.3.6 • Published 6 months ago

@nitro/webpack v9.3.6

Weekly downloads
278
License
MIT
Repository
-
Last release
6 months ago

npm version License Build Status

Nitro Webpack

Configurable and easy to use webpack 4 config for nitro projects.

Usage

const options = {
    rules: {
        js: true,
        ts: false,
        scss: true,
        hbs: true,
        woff: true,
        font: false,
        image: true,
    },
    features: {
        banner: true,
        bundleAnalyzer: false,
        theme: false,
        dynamicAlias: false,
    },
};
const webpackConfig = require('@nitro/webpack/webpack-config/webpack.config.dev')(options);

module.exports = webpackConfig;

Configuration

Rules

No loader rule is enabled by default. Activate following prepared rules you need in options.rules

options.rules.js

  • Type: boolean || object
  • default: false
  • file types: js, jsx, mjs

Config:

  • true or {} activates JavaScript support

options.rules.ts

  • Type: boolean
  • default: false
  • file types: ts, tsx

Config:

  • true will activate TypeScript support

options.rules.scss

  • Type: boolean || object
  • default: false
  • file types: scss, css

Config:

  • true or {} will activate scss support
  • { publicPath: '../' } provide a separate public path for stylesheets. By default, webpack uses the value from 'output.publicPath'. (only relevant for production build)
  • { implementation: require('node-sass') } gives the possibility to use 'node-sass' as sass implementation. (you have to add 'node-sass' as a dev-dependency in your project)

options.rules.hbs

  • Type: boolean || object
  • default: false
  • file types: hbs

Config:

  • true or {} will activate handlebars handlebars precompiled templates support
  • { include: [] } additionally adds include config to rule
  • { exclude: [] } additionally adds exclude config to rule

options.rules.woff

  • Type: boolean || object
  • default: false
  • file types: woff, woff2

Config:

  • true or {} will activate woff font support (in CSS files)
  • { include: [] } additionally adds include config to rule
  • { exclude: [] } additionally adds exclude config to rule

options.rules.font

  • type: boolean || object
  • default: false
  • file types: eot, svg, ttf, woff, woff2

Config:

  • true or {} will activate font support for eot, svg, ttf, woff & woff2 fonts (in CSS files)
  • { include: [] } additionally adds include config to rule
  • { exclude: [] } additionally adds exclude config to rule

⚠ Please use this rule with care. You have to configure includes and exclude when you also use woff and/or image loader. Otherwise, svg or woff files are processed with multiple configurations.

options.rules.image

  • Type: boolean || object
  • default: false
  • file types: png, jpg, gif, svg

Config:

  • true will activate image support
  • { include: [] } additionally adds include config to rule
  • { exclude: [] } additionally adds exclude config to rule

options.features

Enable some additional features

options.features.banner

  • Type: boolean
  • default: true

(only relevant for production build)

true will add a text banner with infos from package.json to the bundled js & css

options.features.bundleAnalyzer

  • Type: boolean
  • default: false

true will add the bundleAnalyser plugin and opens a browser window with the stats

options.features.theme

  • Type: string || false
  • default: false

A string will activate theming support:

  • webpack uses ./src/ui.${theme} as entrypoint (instead of ./src/ui)
  • a subfolder within assets is used for the output path and publicPath (/assets/${theme}/)

It makes sense to use a dynamic value e.g. an environment variable, as shown in the example configuration.

options.features.dynamicAlias

  • Type: object || false
  • default: false

A proper configured dynamicAlias feature will activate the DynamicAliasResolverPlugin which can change import paths in source files dynamically on compile time as desired.

Properties:

  • options.features.dynamicAlias.search (string || RegExp) search term to be replaced (e.g. '/theme/light')
  • options.features.dynamicAlias.replace (string) string as replacement (e.g. /theme/${theme})

Extending Configuration

Code Splitting

By default, all js imports from 'node_modules' are extracted to a 'vendors.js' to use in your view files.

Dynamically imported js files will be extracted to public/js/dynamic/. You may use them in a promise chain.

import('package-name').then((pack) => {
  // do something with 'pack'
});

import(
  /* webpackChunkName: "mychunk" */ 'package-name'
).then((pack) => {
  // do something with 'pack'
});

You may change the default configuration in webpackConfig.optimization.splitChunks

Changelog

Recent changes can be viewed on Github on the Releases Page

9.3.6

6 months ago

9.3.5

6 months ago

9.3.4

7 months ago

9.3.3

7 months ago

9.3.2

7 months ago

9.3.1

7 months ago

9.2.5

9 months ago

9.2.4

9 months ago

9.2.3

10 months ago

9.3.0

9 months ago

9.2.2

12 months ago

9.2.1

1 year ago

9.2.0

1 year ago

9.1.0

1 year ago

9.0.3

1 year ago

8.1.0

2 years ago

8.1.1

2 years ago

7.5.3

2 years ago

7.5.4

2 years ago

9.0.2

1 year ago

9.0.1

1 year ago

9.0.0

1 year ago

8.0.0

2 years ago

7.5.2

2 years ago

7.5.1

2 years ago

7.5.0

2 years ago

7.3.0

2 years ago

7.4.0

2 years ago

7.2.5

2 years ago

7.2.4

2 years ago

7.2.3

2 years ago

7.2.2

2 years ago

7.2.1

2 years ago

7.1.3

2 years ago

7.2.0

2 years ago

7.0.9

3 years ago

7.1.2

2 years ago

7.1.1

3 years ago

7.1.0

3 years ago

7.0.8

3 years ago

7.0.7

3 years ago

7.0.6

3 years ago

7.0.5

3 years ago

7.0.4

3 years ago

7.0.3

3 years ago

6.1.2

3 years ago

7.0.0

3 years ago

7.0.2

3 years ago

7.0.1

3 years ago

6.1.0

3 years ago

6.1.1

3 years ago

6.0.11

3 years ago

6.0.10

3 years ago

6.0.9

3 years ago

6.0.7

3 years ago

6.0.6

3 years ago

6.0.8

3 years ago

6.0.0-beta.4

3 years ago

6.0.0-rc.1

3 years ago

6.0.0-rc.3

3 years ago

6.0.0-rc.2

3 years ago

6.0.0-beta

3 years ago

6.0.1

3 years ago

6.0.0

3 years ago

6.0.3

3 years ago

6.0.2

3 years ago

6.0.5

3 years ago

6.0.4

3 years ago

5.10.17

3 years ago

5.10.16

4 years ago

5.10.15

4 years ago

5.10.14

4 years ago

5.10.13

4 years ago

5.10.12

4 years ago

5.10.11

4 years ago

5.10.10

4 years ago

5.10.9

4 years ago

5.10.8

4 years ago

5.10.7

4 years ago

5.10.6

4 years ago

5.10.5

4 years ago

5.9.2

4 years ago

5.10.0-beta.3

4 years ago

5.10.2-beta.0

4 years ago

5.10.4

4 years ago

5.10.3

4 years ago

5.10.2

4 years ago

5.10.1

4 years ago

5.10.0

4 years ago

5.10.0-beta.2

4 years ago

5.10.0-beta.1

4 years ago

5.9.1

4 years ago

5.9.0

4 years ago

5.8.9

4 years ago

5.8.8

4 years ago

5.8.7

4 years ago

5.8.6

4 years ago

5.8.5

4 years ago

5.8.4

4 years ago

5.8.3

4 years ago

5.8.2

4 years ago

5.8.1

4 years ago

5.8.0

4 years ago

5.7.5

4 years ago

5.7.4

4 years ago

5.7.3

4 years ago

5.7.2

4 years ago

5.7.1

4 years ago

5.7.0

4 years ago

5.6.12

4 years ago

5.6.11

5 years ago

5.6.10

5 years ago

5.6.9

5 years ago

5.6.8

5 years ago

5.6.7

5 years ago

5.6.6

5 years ago

5.6.5

5 years ago

5.6.4

5 years ago

5.6.3

5 years ago

5.6.2

5 years ago

5.6.1

5 years ago

5.6.0

5 years ago

5.5.3

5 years ago

5.5.2

5 years ago

5.5.1

5 years ago

5.5.0

5 years ago

5.4.0

5 years ago

5.3.3

5 years ago

5.3.2

5 years ago

5.3.1

5 years ago

5.3.0

5 years ago

5.2.9

5 years ago

5.2.8

5 years ago

5.2.7

5 years ago

5.2.6

5 years ago

5.2.5

5 years ago

5.2.4

5 years ago

5.2.3

5 years ago

5.2.2

5 years ago

5.2.1

5 years ago

5.2.0

5 years ago

5.1.6

5 years ago

5.1.5

5 years ago

5.1.4

5 years ago

5.1.3

5 years ago

5.1.2

5 years ago

5.1.1

5 years ago

5.1.0

5 years ago

5.0.1

5 years ago

5.0.0

5 years ago

4.14.4

5 years ago

5.0.0-rc.2

5 years ago

5.0.0-rc.1

5 years ago

5.0.0-beta

5 years ago

4.14.3

5 years ago

4.14.2

5 years ago

4.14.1

6 years ago

4.14.0

6 years ago

4.13.5

6 years ago

4.13.4

6 years ago

4.13.3

6 years ago

4.13.2

6 years ago

4.13.1

6 years ago

4.13.0

6 years ago

4.12.0

6 years ago

4.11.0

6 years ago

4.10.0

6 years ago

4.9.0

6 years ago

4.8.3

6 years ago

4.8.2

6 years ago

4.8.1

6 years ago

4.8.0

6 years ago

4.7.5

6 years ago

4.7.4

6 years ago

4.7.3

6 years ago

4.7.2

6 years ago

4.7.1

6 years ago

4.7.0

6 years ago

4.6.6

6 years ago

4.6.5

6 years ago

4.6.4

6 years ago

4.6.3

6 years ago

4.6.2

6 years ago

4.6.1

6 years ago

4.6.0

6 years ago

4.5.2

6 years ago

4.5.1

6 years ago

4.5.0

6 years ago

4.4.4

6 years ago

4.4.3

6 years ago

4.4.2

6 years ago

4.4.1

6 years ago

4.4.0

6 years ago

4.3.6

6 years ago

4.3.5

6 years ago

4.3.4

6 years ago

4.3.3

6 years ago

4.3.2

6 years ago

4.3.1

6 years ago

4.3.0

6 years ago

4.2.3

6 years ago

4.2.2

6 years ago

4.2.1

6 years ago

4.2.0

6 years ago

4.1.9

6 years ago

4.1.8

6 years ago

4.1.7

6 years ago

4.1.6

6 years ago

4.1.5

6 years ago

4.1.4

6 years ago

4.1.3

6 years ago

0.5.2

6 years ago

0.5.1

7 years ago

0.5.0

7 years ago

0.4.0

7 years ago

0.3.11

7 years ago

0.3.10

7 years ago

0.3.9

7 years ago

0.3.8

7 years ago

0.3.7

7 years ago

0.3.6

7 years ago

0.3.5

7 years ago

0.3.4

7 years ago

0.3.3

7 years ago

0.3.2

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.0

7 years ago

0.1.0

7 years ago