# bundle-up
**Repository Path**: mirrors_FGRibreau/bundle-up
## Basic Information
- **Project Name**: bundle-up
- **Description**: A low level asset manager for NodeJS (see Pound for an higher-level interface)
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-09-24
- **Last Updated**: 2026-07-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Bundle up! [](https://secure.travis-ci.org/FGRibreau/bundle-up) [](https://www.gittip.com/fgribreau/)
==========
Bundle up is a middleware for connect to manage all client-side assets in an organized way.
Fork by @FGRibreau
------------------
* Fix `BundleUp(app, asset object | path string, options object);`
* Added `.addJsUrl(url [, namespace])` & `.addCssUrl(url [, namespace])`
* Fix Express 2 & 3
* Bug fix when adding the same file in different bundles
* Added `.addJsObject(object [, namespace])`
* `complete` callback when Bundle up is ready (if in production, when files are minified)
[Pound](https://github.com/FGRibreau/pound) an higher-level asset manager for Node.JS/Express now use this fork of Bundle-up.
Installation
------------
$ npm install bundle-up2
Usage
-----
``` js
var BundleUp = require('bundle-up2')
, assets = require('./assets');
BundleUp(app, assets, {
staticRoot: __dirname + '/public/',
staticUrlRoot:'/',
bundle:true,
minifyCss: true,
minifyJs: true,
complete: console.log.bind(console, "Bundle-up: static files are minified/ready")
});
// To actually serve the files a static file
// server needs to be added after Bundle Up
app.use(express.static(__dirname + '/public/'))
```
The first parameter to the BundleUp middleware is the app object and the second is the path to the assets file. Through the assets file all client-side assets needs to get added.
``` js
// assets.js
module.exports = function(assets) {
// .addJs(filename [, namespace])
assets.addJs('/public/js/jquery-1.6.4.min.js', 'default');
assets.addJs('/public/js/jquery-1.6.4.min.js', 'app');
assets.addJs('/public/js/jquery.placeholder.min.js');
assets.addJs('/app/client/main.coffee');
// New .addJsUrl(object [, namespace])
assets.addJsUrl('/socket.io.js');
// addCss(filename [, namespace])
assets.addCss('/public/bootstrap/bootstrap.min.css');
assets.addCss('/app/styles/screen.styl');
// New .addCssUrl(object [, namespace])
assets.addCssUrl('http://twitter.github.com/bootstrap/assets/css/bootstrap.css');
// New .addJsObject(object [, namespace])
assets.addJsObject({"Redsmin.app":{}});// Will create Redsmin.app = {};
}
```
Just point to a file (.js, .css, .coffee or .styl are currently supported) anywhere in your app directory. In your view you can then just render all the css or javascript files by calling `renderStyles` and `renderJs` like this:
``` jade
!!!
html
head
!= renderStyles()
body!= body
!= renderJs()
```
By default this will render
``` html
```
All assets will be compiled on-the-fly when `bundle:false` is set. Therefore the server never
needs to be restarted when editing the different assets.
To render bundles `bundle:true` needs to be passed as a parameter to the middleware. This will concatenate all javascript and css files into bundles and render this:
``` html
```
All bundles are min during startup. The filename will change with the content so you should configure your web server with far future expiry headers.
### min/
All files that needs to be compiled, copied (if you are bundling up a file that doesn't reside in your `public/` directory) or bundled will end up in `public/min/` directory. This is to have an organized way to separate whats actually *your code* and whats *min code*.
### Filtered paths
All files can be added in a directory by using a "filtered path" like this
``` js
// assets.js
module.exports = function(assets) {
assets.addJs(__dirname + '/public/js/**'); //adds all files in /public/js (subdirectories included)
assets.addJs(__dirname + '/public/*.js'); //adds all js files in /public
assets.addJs(__dirname + '/cs/**.coffee'); //adds all coffee files in /cs (subdirectories included)
});
```
### Namespaces
Sometimes all javascript or css files cannot be bundled into the same bundle. In that case
namespaces can be used
``` js
// assets.js
module.exports = function(assets) {
assets.addJs(__dirname + '/public/js/1.js');
assets.addJs(__dirname + '/public/js/2.js');
assets.addJs(__dirname + '/public/locales/en_US.js', 'en_US');
assets.addJs(__dirname + '/public/css/1.css');
assets.addJs(__dirname + '/public/css/2.css');
assets.addJs(__dirname + '/public/css/ie.css', 'ie');
});
```
``` jade
!!!
html
head
!= renderStyles()
!= renderStyles('ie')
body!= body
!= renderJs()
!= renderJs('en_US')
```
which will render this with `bundle:false`:
``` html
```
and this with `bundle:true`:
``` html
```
## Donate
[Donate Bitcoins](https://coinbase.com/checkouts/fc3041b9d8116e0b98e7d243c4727a30)
License
-------
MIT licensed