Merco is Express middleware for merging and minifying JS files in run time. It also support cache busting.
install merco module:
npm install merco
use merco as middleware:
app.use(merco.init(params));
set route from which you want to serve files:
app.get('/build/*', merco.route);
use it in template (.ejs):
<% getJS('PATH/TO/FILE1') %>
<% getJS('PATH/TO/FILE2') %>
<%- printJS() %>
route - route from which you want to serve files
version - cache buster, good practice is to use package.version
filePath - location of raw js files
buildPath - location where processed files should be stored (need write permissions on that folder)
sKey - secret key that will be used for encryption
cache - default true, in dev environment set cache to false
ignoreSameFile - default true, ignores same file while registering with getJS()
async - default false, includes async
attribute to script tag. More about it here
npm run test
- in case of large application and big number of files doing this in run time is much more convinient
- this is also useful in case of multivariant tests when we want to have different js for different variants
- it's easier to use in some case
For better performance use caching on nginx or akamai.