packback

2.0.0 • Public • Published

Packback

A simple tool to bundle files (= pack back multiple files into a single file)

Build Status Coverage Status Dependency Status Dependency Status

Usage

npm install --save-dev packback
const packback = require('packback');
 
const packed = packback.packFile('./src/input.html');
 
fs.writeFileSync('./build/packed.html', packed);
const packback = require('packback');
 
const packed = packback.pack(`
  Lorem ipsum
  include test.pug
  Lorem ipsum
`, {
  file: 'dummy.txt',
  context: __dirname
});
 
fs.writeFileSync('./build/packed.html', packed);

Handlers

Packback enables the use of handlers to process files. You can easily write your own handlers by providing the following options/properties. In addition, you can find pre-built handlers on npm.

Options

test

A callback function that returns whether the handler is appropriate for a fetched file or not.

Example: (filename) => /\.txt$/.test(filename)

pattern

A regular expression to find matches within the file content.

Example: /include\s*(\()?(.*?)\.txt(\)?)/g

matcher

A callback function that is called for each match and returns the real file name for further processing. This may be useful in case the import statement conceals some parts of the real filename (like Node.js does with the optional .js file extension for require calls).

Example: (matches) => `${matches[2]}.txt`

decorator (optional)

A callback function that is called for each match just before inserting the content into the overall bundle. This may be useful to implement further processing of contents (like implementing debugging markers).

Example: (content, file) => [`<!-- START ${path.basename(file)} -->`, content.trim(), `<!-- END ${path.basename(file)} -->`].join('\n')

Example

const packback = require('packback');
 
packback.use({
  test: (filename) => /\.html/.test(filename),
  pattern: /<!--#include file="(.*?)\.html" -->/g,
  matcher: (matches) => `${matches[1]}.html`,
  decorator: (content, file) => [`<!-- START ${path.basename(file)} -->`, content.trim(), `<!-- END ${path.basename(file)} -->`].join('\n')
});
 
const packed = packback.packFile('./src/input.html');
 
fs.writeFileSync('./build/packed.html', packed);

Changelog

  • 2.0.0
    • Initial version

License

Copyright (c) 2018 Thomas Rasshofer
Licensed under the MIT license.

See LICENSE for more info.

Readme

Keywords

Package Sidebar

Install

npm i packback

Weekly Downloads

14

Version

2.0.0

License

MIT

Unpacked Size

248 kB

Total Files

21

Last publish

Collaborators

  • rasshofer