tarm
Tarmount handler plugin for hapi.js.
tarm provides a new tarmount
handler
method for serving the contents of tar files using @hapi/inert
.
Examples
tarm enables a number of common use cases for serving static assets.
Static file server
The following creates a basic static file server that can be used to serve content from the
site.tar
file on port 3000:
const Path = require('path');
const Hapi = require('@hapi/hapi');
const Inert = require('@hapi/inert');
const Tarm = require('tarm');
const server = Hapi.Server({ port: 3000 });
const provision = async () => {
await server.register([Inert, Tarm]);
server.route({
method: 'GET',
path: '/{param*}',
handler: {
tarmount: {
path: Path.join(__dirname, 'site.tar')
}
}
});
await server.start();
console.log('Server running at:', server.info.uri);
};
provision();
Usage
After registration, this plugin enables the 'tarmount'
route handler.
Note that @hapi/inert
is required to be registered as well. Eg:
await server.register([Inert, Tarm]);
tarmount
handler
The Generates a directory endpoint for serving static content from a tar file.
Routes using the directory handler must include a path parameter at the end of the path
string (e.g. /path/to/somewhere/{param}
where the parameter name does not matter). The
path parameter can use any of the parameter options (e.g. {param}
for one level files
only, {param?}
for one level files or the directory root, {param*}
for any level, or
{param*3}
for a specific level). If additional path parameters are present, they are
ignored for the purpose of selecting the tar file resource. The tarmount handler is an
object with the following options:
path
- (required) the tar file path (relative paths are resolved based on the routefiles
configuration). Value can be:- a single path string pointing to the tar file.
- an array of path strings. Each path will be attempted in order until a match is found (by following the same process as the single path string).
- a function with the signature
function(request)
which returns the path string or an array of path strings. If the function returns an error, the error is passed back to the client in the response.
showHidden
- optional boolean, determines if hidden files will be shown and served. Defaults tofalse
.etagMethod
- specifies the method used to calculate theETag
header response. Available values:'hash'
- SHA1 sum of the file contents, suitable for distributed deployments. Default value.'simple'
- Hex encoded size and modification date, suitable when files are stored on a single server.false
- Disable ETag computation.