Coder Social home page Coder Social logo

patrickjs / webpack Goto Github PK

View Code? Open in Web Editor NEW

This project forked from webpack/webpack

1.0 2.0 0.0 2.63 MB

Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jade, coffee, css, less, ... and your custom stuff.

Home Page: http://webpack.github.io

License: MIT License

JavaScript 99.37% CSS 0.60% CoffeeScript 0.04%

webpack's Introduction

webpack

NPM version Gitter chat Gittip donate button

documentation

Introduction

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

TL;DR

  • bundles CommonJs and AMD modules. (even combined)
  • can create a single bundle or multiple chunks loaded on demand, to reduce initial loading time.
  • dependencies are resolved during compilation reducing the runtime size
  • loaders can preprocess files while compiling, i. e. coffee-script to javascript

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

Installation

project: npm install webpack --save-dev

global: npm install webpack -g

Examples

Take a look at the examples folder.

Features

Plugins

webpack has a rich plugin interface. Most of the features within webpack itself use this plugin interface. This makes webpack very flexible.

Performance

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

Loaders

webpack enables use of loaders to preprocess files. This allows you to bundle any static resource way beyond javascript. You can easily write your own loaders using node.js.

Support

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

Code Splitting

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

Optimizations

webpack can do many optimizations to reduce the output size. It also can make your chunks cache friendly by using hashes.

A small example of what's possible

// webpack is a module bundler
// This means webpack takes modules with dependencies
//   and emits static assets representing those modules.
 
// dependencies can be written in CommonJs
var commonjs = require("./commonjs");
// or in AMD
define(["amd-module", "../file"], function(amdModule, file) {
	// while previous constructs are sync
	// this is async
	require(["big-module/big/file"], function(big) {
		 // for async dependencies webpack splits
		 //  your application into multiple "chunks".
		 // This part of your application is
		 //  loaded on demand (Code Splitting)
		var stuff = require("../my/stuff");
		// "../my/stuff" is also loaded on demand
		//  because it's in the callback function
		//  of the AMD require
	});
});
 
 
require("coffee!./cup.coffee");
// "Loaders" can be used to preprocess files.
// They can be prefixed in the require call
//  or configured in the configuration.
require("./cup");
// This does the same when you add ".coffee" to the extensions
//  and configure the "coffee" loader for /\.coffee$/
 
 
function loadTemplate(name) {
	return require("./templates/" + name + ".jade");
	// many expressions are supported in require calls
	// a clever parser extracts information and concludes
	//  that everything in "./templates" that matches
	//  /\.jade$/ should be included in the bundle, as it
	//  can be required.
}
 
 
// ... and 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 (linux) Build status (windows)

You can run the browser tests:

cd test/browsertests
node build

and open tests.html in browser.

Contribution

You are welcome to contribute by opening an issue or a pull request. It would be nice if you open sourced 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 discuss 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)

Sponsor

This is a freetime project. My time investment fluctuates randomly. If you use webpack for a serious task you may want me to invest more time. Or if you make some good revenue you can give some money back. Keep in mind that this project may increase your income. It makes development and applications faster and reduces the required bandwidth.

I'm very thankful for every dollar. If you leave your username or email I may show my thanks by giving you extra support.

Donate to sokra

Dependencies

Dependency Status

webpack's People

Contributors

azaeres avatar bernii avatar denisizmaylov avatar diurnalist avatar emkay avatar enaqx avatar gaearon avatar hmalphettes avatar incredible-io avatar jhnns avatar joeyyang avatar julen avatar kmulvey avatar lettertwo avatar marcus avatar markmarijnissen avatar mattsoltani avatar mzgoddard avatar nickdima avatar plaxdan avatar polotek avatar rdrey avatar shama avatar sokra avatar syranide avatar taytay avatar tcoopman avatar undozen avatar vhpoet avatar vijar avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.