Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Bundle up is a middleware for connect to manage all client-side assets in an organized way.
BundleUp(app, asset object | path string, options object);
.addJsUrl(url [, namespace])
& .addCssUrl(url [, namespace])
.addJsObject(object [, namespace])
complete
callback when Bundle up is ready (if in production, when files are minified)Pound an higher-level asset manager for Node.JS/Express now use this fork of Bundle-up.
$ npm install bundle-up2
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.
// 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:
!!!
html
head
!= renderStyles()
body!= body
!= renderJs()
By default this will render
<link href='/bootstrap/bootstrap.min.css' media='screen' rel='stylesheet' type='text/css'/>
<link href='/min/app/styles/screen.css' media='screen' rel='stylesheet' type='text/css'/>
<script src='/js/jquery-1.6.4.min.js' type='text/javascript'></script>
<script src='/js/jquery.placeholder.min.js' type='text/javascript'></script>
<script src='/min/app/client/main.js' type='text/javascript'></script>
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:
<link href='/min/bundle/d7aa56c_global.css' media='screen' rel='stylesheet' type='text/css'/>
<script src='/min/bundle/1e4b515_global.js' type='text/javascript'></script>
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.
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.
All files can be added in a directory by using a "filtered path" like this
// 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)
});
Sometimes all javascript or css files cannot be bundled into the same bundle. In that case namespaces can be used
// 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');
});
!!!
html
head
!= renderStyles()
!= renderStyles('ie')
body!= body
!= renderJs()
!= renderJs('en_US')
which will render this with bundle:false
:
<link href='/css/1.css' media='screen' rel='stylesheet' type='text/css'/>
<link href='/css/2.css' media='screen' rel='stylesheet' type='text/css'/>
<link href='/css/ie.css' media='screen' rel='stylesheet' type='text/css'/>
<script src='/js/1.js' type='text/javascript'></script>
<script src='/js/2.js' type='text/javascript'></script>
<script src='/locales/en_US.js' type='text/javascript'></script>
and this with bundle:true
:
<link href='/min/bundle/d7aa56c_global.css' media='screen' rel='stylesheet' type='text/css'/>
<link href='/min/bundle/d7aa56c_ie.css' media='screen' rel='stylesheet' type='text/css'/>
<script src='/min/bundle/1e4b515_global.js' type='text/javascript'></script>
<script src='/min/bundle/1e4b515_en_US.js' type='text/javascript'></script>
MIT licensed
FAQs
A simple asset manager middleware for connect
The npm package bundle-up2 receives a total of 4 weekly downloads. As such, bundle-up2 popularity was classified as not popular.
We found that bundle-up2 demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.