0.8.0 • Published 7 years ago
broccoli-merge-files v0.8.0
broccoli-merge-files
Merge multiple trees of files into one or multiple files with a user-provided merge function.
Installation
yarn add -D broccoli-merge-filesUsage
const { BroccoliMergeFiles } = require('broccoli-merge-files');
const mergedNode = new BroccoliMergeFiles(inputNodes, {
merge: entries => JSON.stringify(Object.fromEntries(entries))
});inputNodes: An array of nodes, whose contents will be mergedoptions: A hash of options
Options
outputFileName?: string: Optional output file name, ifmergereturns just the file singular file contents.async merge(files: [fileName, contents][]): Called with an array of all files to be merged.- If
outputFileNameis set, expected to return astringorBuffer. - If it is not set, expected to return an array or output files, like:
[fileName, contents][], wherefileNameis astringandcontentsis astringorBuffer.
- If
sort:true(default): Sort in order of input nodes and then relative file path.false: Skip any sorting. Must not be used in conjunction withDuplicateStrategy.KeepFirstorDuplicateStrategy.KeepLast.(a: Entry, b: Entry) => number: Compare function that gets passed two entries. Basically what you would pass to[].sort().
duplicates: If multiple input nodes contain a file with the same relative file path...'prohibit'(default): an error will be thrown and the pipeline crashes.'keep-first': the file from the first input node containing it is kept.'keep-last': the file from the last input node containing it is kept.'keep-all': all files will be passed through tomerge.
async transformFile?(path: string, contents: string | Buffer): any(optional): Lets you transform every file before passing it tomerge.patterns?: string | string[]: Glob patterns forfast-glob.globOptions?: object: Glob options forfast-glob.encoding?: string = 'utf8': The encoding to use when reading and writing files.annotation?: string: A note to help tell multiple plugin instances apart.
Related projects
broccoli-merge-trees— Copies multiple trees of files on top of each other, resulting in a single merged tree. Does not merge any individual files.broccoli-flatiron— Takes in a single input tree and merges all input files into a single JS module. Since this plugin is deprecated and not maintained any more,broccoli-merge-filesincludes a compatibility util to do the same thing:const { BroccoliMergeFiles } = require('broccoli-merge-files'); const flatiron = require('broccoli-merge-files/flatiron'); new BroccoliMergeFiles([inputNode], { merge: files => flatiron(files, { // trimExtensions: false, // prefix: 'export default ', // suffix: ';' }), outputFileName: 'files.js' });