privacyimprint

The configuration is an array of folders or single files you want to copy. Each entry of the array is an object with two keys: source is the source folder, and target is the target folder.

The resulting configuration might look something like this:

module.exports = {
    static: [{
        source: "./images",
        target: "./public/images"
    }, {
        source: "./fonts",
        target: "./public/fonts"
    }]
};

If you only want to copy some of the files, you can select them using a filter function. That function will be called for every file, with its path relative to source. Only files passing the test implemented by that function – i.e. those for which the function returns true – will be copied.

In this example, we only copy .ttf fonts and omit images from the templates directory:

module.exports = {
    static: [{
        source: "./fonts",
        target: "./public/fonts",
        filter: file => file.endsWith(".ttf")
    }, {
        source: "./images",
        target: "./public/images",
        filter: file => !file.startsWith("templates/")
    }]
}

Compact

Note that for compressing images, we have an image plugin.

By default, faucet-pipeline-static only copies files, even if the --compact flag is provided. If you want to compact files, provide the compact option in your configuration. It is an object that maps file extensions to functions. The functions are expected to receive a buffer as their only argument, returning either a buffer or a promise wrapped around a buffer. The resulting buffer is the compacted version of the provided buffer.

A common use case is compressing images. The following configuration is a good starting point: If you prefer to compact your images on your own, you could for example use imagemin-mozjpeg to compress all JPGs:

module.exports = {
	static: [{
		source: "./src",
		target: "./dist",
		compact: {
			jpg: require("imagemin-mozjpeg")({ quality: 80 })
		}
    }]
};