mortal-webpack

mortal-webpack-logo

Declarative webpack configuration that scales.

Installation

npm install --save-dev mortal-webpack
# or using yarn
yarn add --dev mortal-webpack

Getting started

Currently this package only targets webpack 1.

The intended usage of mortal-webpack is to pass it a list of what is referred to as build directives and let it generate a configuration object to give to webpack.

Where one would normally write something like this:

// @file: webpack.config.js
module.exports = {
  entry: 'index.js',
  output: {
    path: 'dist',
  }
}

They would now put mortal-webpack in between:

// @file: webpack.config.js
const { compose, builders: b } = require('mortal-webpack')

module.exports = compose({}, [
  b.generateBundle({
    name: 'application',
    modules: [ 'index.js' ]
  }),

  b.output({ path: 'dist' }),
])

What you pass to the compose call above is an array of build directives - these are your primary APIs of configuring webpack with mortal- webpack and they are what you should be looking into next.

Once you're feeling excited, you can tap into writing macros for extra convenience and power.

Where to go from here

Related projects

webpack-blocks is a great alternative to mortal-webpack and may prove a better fit for many use cases.

There are several differences between the two:

  • mortal-webpack is focused on large and complicated build systems consisting of multiple targets
  • while webpack-blocks provides handy "blocks" of functionality from anywhere (3rd-party), mortal-webpack has no such notion for extensibility. Instead, you can roll your own macros to share functionality between different targets.
  • mortal-webpack is designed to catch user mistakes and tries very hard to prevent bad builds from ever being started
  • webpack-blocks may be easier to get started with. The target audiences differ between the two; mortal-webpack doesn't attempt to hide anything from you, you'll still have to go through the different directives.

License

mortal-webpack - declarative webpack configuration Copyright (C) 2017 Instructure, INC.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Outlet "Text" has not been defined! This is most likely a configuration error. Please verify the outlet name is correct.