Go to file
Tobias Koppers e58f315f32 1.0.0-beta8 2014-01-24 13:33:27 +01:00
bin track chunk origin 2014-01-23 15:31:40 +01:00
buildin Moved node libs for browser into separate package 2013-02-25 11:34:33 +01:00
examples update examples 2014-01-24 13:33:19 +01:00
hot hot module replacement with code splitting #26 2013-06-19 16:09:46 +02:00
lib add origin for used named chunks 2014-01-24 13:32:58 +01:00
test local-module support for CJS and AMD require 2014-01-24 13:13:21 +01:00
web_modules make it webpack-able 2013-07-10 23:20:07 +02:00
.gitattributes examples should have normalized line endings 2012-11-07 12:42:22 +01:00
.gitignore added coverage to gitignore 2013-12-16 22:33:47 +01:00
.npmignore fixed npmignore 2013-12-17 00:57:54 +01:00
.travis.yml dropped travis tests for node 0.6 2013-10-16 09:03:03 +02:00
LICENSE 1.0.0-beta6 2014-01-10 10:49:30 +01:00
README.md better features list 2014-01-14 23:22:35 +01:00
bm.js ? 2013-03-11 12:18:36 +01:00
package.json 1.0.0-beta8 2014-01-24 13:33:27 +01:00

README.md

webpack

NPM version

documentation

Introduction

webpack is a bundler for modules. The main purpose is to bundle javascript files for usage in browser.

TL;DR

  • bundles CommonJs and AMD modules. (even combined)
  • can create a single bundle or a bunch of chunks loaded on demand, to reduce initial loading time.
  • dependencies are resolved while compiling, this makes the runtime very small
  • loader can preprocess files while compiling, i. e. coffee-script to javascript

Check the documentation if you want to know more...

Examples

Take a look at the examples folder.

Features

Plugins

webpack has a rich plugin interface. Most of the features are internal plugins using this interface. This makes webpack very flexible.

Performance

webpack uses async I/O and has multiple caching levels. This makes webpack fast and incredible fast on incremental compilation.

Loaders

webpack allows to use loaders to preprocess files. This allows you to bundle any static resource not only javascript. You can easily write your own loaders running in node.js.

Support

webpack supports AMD and CommonJs module styles. It perform clever static analysis on the AST of your code. It even has a evaluation engine to evaluate simple expressions. This allows you to support most existing libraries.

Code Splitting

webpack allows to split your codebase into chunks. Chunks are loaded on demand. This reduces initial loading time.

Optimizations

webpack can do many optimizations to reduce the output size. It also cares about caching by using hashes.

A small example what's possible

var commonjs = require("./commonjs");
define(["amd-module", "./file"], function(amdModule, file) {
	require(["big-module/big/file"], function(big) {
		// AMD require acts as split point
		// and "big-module/big/file" is only downloaded when requested
		var stuff = require("../my/stuff");
		// dependencies automatically goes in chunk too
	});
});

require("coffee!./cup.coffee");
// The loader syntax allows to proprocess files
// for common stuff you can bind RegExps to loaders
// if you also add ".coffee" to the default extensions
// you can write:
require("./cup");

function loadTemplate(name) {
	return require("./templates/" + name ".jade");
	// dynamic requires are supported
	// while compiling we figure out what can be requested
	// here everything in "./templates" that matches /^.*\.jade$/
	// (can also be in subdirectories)
}

require("imports?_=underscore!../loaders/my-ejs-loader!./template.html");
// you can chain loaders
// you can configure loaders with query parameters
// and loaders resolve similar to modules

// ...you can combine everything
function loadTemplateAsync(name, callback) {
	require(["bundle?lazy!./templates/" + name + ".jade"], function(templateBundle) {
		templateBundle(callback);
	});
}

Documentation

documentation

Tests

You can run the node tests with npm test. build status

You can run the browser tests:

cd test/browsertests
node build

and open tests.html in browser.

Contribution

You are welcome to contribute by writing issues or pull requests. It would be nice if you open source your own loaders or webmodules. :)

You are also welcome to correct any spelling mistakes or any language issues, because my english is not perfect...

If you want to discus something or just need help, here is a gitter.im room.

License

Copyright (c) 2012-2014 Tobias Koppers

MIT (http://www.opensource.org/licenses/mit-license.php)

Dependencies

Dependency Status