Broccoli plugin to merge multiple files into one or multiple files
Last updated a year ago by buschtoens .
MIT · Repository · Original npm · Tarball · package.json
$ cnpm install broccoli-merge-files 
SYNC missed versions from official npm registry.


Build Status npm version Download Total Node.js Versions code style: prettier dependencies devDependencies

Merge multiple trees of files into one or multiple files with a user-provided merge function.


yarn add -D broccoli-merge-files


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 merged
  • options: A hash of options


  • outputFileName?: string: Optional output file name, if merge returns just the file singular file contents.
  • async merge(files: [fileName, contents][]): Called with an array of all files to be merged.
    • If outputFileName is set, expected to return a string or Buffer.
    • If it is not set, expected to return an array or output files, like: [fileName, contents][], where fileName is a string and contents is a string or Buffer.
  • sort:
    • true (default): Sort in order of input nodes and then relative file path.
    • false: Skip any sorting. Must not be used in conjunction with DuplicateStrategy.KeepFirst or DuplicateStrategy.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 to merge.
  • async transformFile?(path: string, contents: string | Buffer): any (optional): Lets you transform every file before passing it to merge.
  • patterns?: string | string[]: Glob patterns for fast-glob.
  • globOptions?: object: Glob options for fast-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-files includes 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'

Current Tags

  • 0.8.0                                ...           latest (a year ago)

5 Versions

  • 0.8.0                                ...           a year ago
  • 0.7.0                                ...           a year ago
  • 0.6.0                                ...           a year ago
  • 0.3.0                                ...           a year ago
  • 0.0.1                                ...           a year ago
Maintainers (1)
Today 0
This Week 1
This Month 1
Last Day 0
Last Week 0
Last Month 31
Dependencies (4)

Copyright 2014 - 2016 © |