https://github.com/vanng822/jcash
[DEPRECATED] Javascript, css and image files hashing for nodejs/express
https://github.com/vanng822/jcash
Last synced: about 2 months ago
JSON representation
[DEPRECATED] Javascript, css and image files hashing for nodejs/express
- Host: GitHub
- URL: https://github.com/vanng822/jcash
- Owner: vanng822
- License: mit
- Created: 2012-03-30T20:44:39.000Z (about 13 years ago)
- Default Branch: master
- Last Pushed: 2019-06-14T17:08:56.000Z (almost 6 years ago)
- Last Synced: 2025-03-04T11:08:24.843Z (about 2 months ago)
- Language: JavaScript
- Homepage:
- Size: 85 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## [DEPRECATED]
Please I have no longer time for maintaining this package.
Previous version depended on old version of uglify-js which had security issues
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8857
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-8858
PLEASE DO NOT USE THIS PACKAGE## jcash
This project is mostly for adapting solutions out there for my personal use.
For the size of the image you have to install GraphicsMagick (http://www.graphicsmagick.org/)## Usage
### Howto configure
/**
*
* configuration rules
* location referred to the path in the url
*
{
files: {
block1 : [filename1, filename2, ...],
...
},
urls : {
block1 : [url1, url2,...],
...
},
locationMap : {
path1 : [block1, block2,...],
path2 : [block1,block3,...],
...
}
}
*/### Real example
Real configuration at http://igeonote.com
var config = {
js : {
files : {
'igeonote' : [
'vnf/namespace.js',
'vnf/language.js',
'vnf/util/gplusone.js',
'vnf/util/fbshare.js',
'vnf/util/geolocation.js',
'vnf/util/loading.js',
'vnf/util/gatracking.js',
'jquery/jhistory.js',
'igeonote.js']
},
urls : {
'jQuery' : ['http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'],
'googleMap' : ['http://maps.google.com/maps/api/js?sensor=false']
},
locationMap : {
'/' : ['jQuery', 'igeonote', 'googleMap'],
'/note' : ['jQuery', 'igeonote', 'googleMap'],
'/city/map' : ['jQuery', 'igeonote', 'googleMap']
}
},
css : {
files : {
'igeonote' : ['igeonote.css'],
'mobile' : ['igeonote-phone.css']
},
urls : {},
locationMap : {
'*' : ['igeonote']
}
}
};Basic server setup
var express = require('express');
var staticHandler = require('jcash');
var app = express.createServer();
var jsManager = staticHandler.getJsManager();
var cssManager = staticHandler.getCssManager();
var imageManager = staticHandler.getImageManager({path : __dirname + '/public/img', hasGm : true});/* parsing the configuration */
jsManager.parseConfig(staticConfig.js);
cssManager.parseConfig(staticConfig.css);/* for serving the contents */
staticHandler.bootstrap(app);/* Adding template functions */
app.dynamicHelpers(staticHandler.dynamicHelpers);/* generate the cache */
jsManager.preRenderAll();
cssManager.preRenderAll();
imageManager.fetchFiles();Content template (ejs templates)
<% addBottomScript('some javascript including script-tag here') %>
<%- renderImageTag('/img/icons/loading.gif') %>layout template with automatic location mapping
<%- renderStyleTags() %>
<%- body %>
<%- renderScriptTags() %>
<%- renderBottomScripts() %>
$(function(){
VNF.util.Loading.loadingImage = "<%- getImageUrl('/img/icons/loading.gif') %>";
});