node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

webpack-config-rentpath

webpack-config-rentpath

Shared webpack config across RentPath apps.

Installation

$ npm i --save webpack-config-rentpath

Usage

The most minimal usage would be to create a webpack.config.js file in the root of your app with the following content:

module.exports = require('webpack-config-rentpath').config

If your app requires any webpack aliases (resolve.alias), create a separate file webpack-alias.config.js that exports the alias hash. The file will automatically be found and loaded by the base config. For example:

module.exports = {
  "gallery": "gallery.js/dist",
  "login": "login/dist",
  "tealium": "tealium/dist/tagging.js"
};

If your app requires Babel presets other than es2015, make sure to declare them in .babelrc in the root of your app. For example:

{ "presets": ["es2015", "react"] }

If you require any other customizations, you will need to edit webpack.config.js such that it mutates the standard config before exporting it as described below.

Extended configuration

The config that this package exports is a base config reflecting RentPath's opinions. If your app has special needs, it can mutate the base config. For example:

var config = require('webpack-config-rentpath').config
 
// Add a loader 
config.module.loaders.push({ test: /everestjs\/index.js$/, loader: "script-loader" })
 
// Add a plugin 
var webpack = require('webpack')
config.plugins.push(new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /en/))
 
module.exports = config

If you need to make environment-specific config changes, you can take advantage of the appEnv variable that webpack-config-rentpath exports in addition to config. The value of appEnv is a string obtained from the environment variable APPLICATION_ENVIRONMENT and defaults to "production" if missing. For example:

var webpackConfigRentpath = require('webpack-config-rentpath')
var config = webpackConfigRentpath.config
var appEnv = webpackConfigRentpath.appEnv
 
if(appEnv == 'development') {
  // do some dev stuff 
}
 
if(appEnv != 'development') {
  // do some non-dev stuff 
}
 
if(appEnv == 'production') {
  // do some production stuff 
}
 
module.exports = config

Scripts

  • npm run compile - Compiles the module to disk (~/lib).
  • npm run compile:watch - Same as npm run compile but watches files for changes.
  • npm run lint - Lints all files.
  • npm run lint:fix - Lints all files and attempts to fix any issues.
  • npm run test - Runs unit tests.
  • npm run test:watch - Same as npm test but watches files for changes.
  • npm run test:cov - Generates a test coverage report.

Commitizen

webpack-config-rentpath uses Commitizen to format commit messages.

  • Install it globally $ npm install -g commitizen Once you are ready to commit, follow the familiar github workflow, with a slight change.
$ git add <files>
$ git cz

git cz will bring up the Commitizen commit prompt, follow the instructions, and $ git push as usual.

This commit message format is used for semantic-release.