# mendel-treenherit

> Browserify require transform for folder-based merge. Created for mendel.

Latest version **4.2.0** (published 2026-08-16) · MIT license · 0 weekly downloads

## Install

```sh
npm install mendel-treenherit
pnpm add mendel-treenherit
yarn add mendel-treenherit
bun add mendel-treenherit
```

## Health

**Score 55/100 (C)** — status: active.

Positive: no vulnerabilities; recently updated; high maintenance score.

Warnings: low downloads; no types; no esm support.

## Facts

| | |
|---|---|
| Version | 4.2.0 |
| Published | 2026-08-16 |
| First published | 2016-05-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 15.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Irae Carvalho |
| Maintainers | irae, juandopazo, tufandevrim, stephanwlee, anuragdamle, muralikr |
| Keywords | mendel, browserify-transform, build |

## Links

- npm: https://www.npmjs.com/package/mendel-treenherit
- Repository: https://github.com/irae/mendel
- Homepage: https://github.com/irae/mendel#readme
- Issues: https://github.com/irae/mendel/issues
- npm.io page: https://npm.io/package/mendel-treenherit

## Dependencies (4)

- [async](https://npm.io/package/async.md) ^3.2.6
- [debug](https://npm.io/package/debug.md) ^4.4.0
- [browser-resolve](https://npm.io/package/browser-resolve.md) ^2.0.0
- [browserify-transform-tools](https://npm.io/package/browserify-transform-tools.md) ^1.5.3

## Alternatives

- [raw-loader](https://npm.io/package/raw-loader.md) — 4.3M weekly downloads
- [plop](https://npm.io/package/plop.md) — 1.4M weekly downloads
- [webpack-deadcode-plugin](https://npm.io/package/webpack-deadcode-plugin.md) — 80.3K weekly downloads
- [@storybook/preact-vite](https://npm.io/package/@storybook/preact-vite.md) — 54.2K weekly downloads
- [vite-plugin-transform](https://npm.io/package/vite-plugin-transform.md) — 2.4K weekly downloads

## Recent versions

- 4.2.0 (latest) — 2026-08-16
- 4.0.0-alpha.0 (next) — 2023-08-10
- 4.1.1 — 2026-07-09
- 4.0.0 — 2025-04-01
- 4.0.0-alpha.2 — 2023-09-16
- 4.0.0-alpha.1 — 2023-09-14
- 1.0.7 — 2018-02-07
- 1.0.6 — 2016-06-15
- 1.0.5 — 2016-06-03
- 1.0.2 — 2016-05-20
- 1.0.1 — 2016-05-20
- 1.0.0 — 2016-05-20

## README

# Mendel tree inheritance

`mendel-treenherit` is a browserify transform that resolves module dependencies using file system variations. In most cases, it is better to use `mendel-browserify` or the Mendel command line tool to generate your bundles, but if you just need to generate a bundle for a particular variation, you can use `mendel-treenherit` alone with browserify to accomplish that.

You can find all about file system variations on the Mendel documentation, but here is quick recap as visual representation:

```
Bundle "base"                                          Bundle "new_add_format"
       ^                                                      ^
       |                resolution direction                  |
       |      ----------------------------------------->      |

src/                       experiments/new_ad_format/  resolved/new_ad_format/
├── controllers            ├── controllers             ├── controllers
│   ├── main.js            │   │                       │   ├── main.js
│   ├── settings.js        │   │                       │   ├── settings.js
│   └── sidebar.js -----> X│   └── sidebar.js ------------>└── sidebar.js **
├── main_bindle.js         │                           ├── main_bindle.js
├── vendor                 │                           ├── vendor
│   ├── calendar.js        │                           │   ├── calendar.js
│   ├── ember.js           │                           │   ├── ember.js
│   ├── jquery.js          │                           │   ├── jquery.js
│   └── react.js           │                           │   └── react.js
└── views                  └── views                   └── views
    ├── admin.js               │                           ├── admin.js
    ├── ads.js -------------> X└── ads.js ---------------->├── ads.js **
    ├── list-item.js                                       ├── list-item.js
    ├── list.js                                            ├── list.js
    ├── login.js                                           ├── login.js
    ├── new_item.js                                        ├── new_item.js
    └── sidebar_item.js                                    └── sidebar_item.js

** Files marked with ** in the "resolved" tree are used from
the "experiments/new_ad_format/" tree, all other files are used
from "src/" tree.

```

To generate `base_bundle.js`, you don't need any transforms, plain old browserify should work:

    browserify src/main_bundle.js --output build/base_bundle.js

In order to generate the new add format you can use `mendel-treenherit` as follows:

```bash
browserify src/main_bindle.js                                      \
        --output build/new_add_format_bundle.js                    \
        --transform [ mandel-treenherit                            \
                      --dirs [ experiments/new_ad_format/ src/ ]   \
                    ]                                              \
```

If you pass in multiple directories you can also do multiple variation inheritance. Take the following source tree:

[![multiple folder inheritance diagram](https://cdn.rawgit.com/yahoo/mendel/master/docs/Multiple-folder-inheritance-source-tree.svg)](../../docs/Multiple-folder-inheritance-source-tree.svg)

This is the resulting resolution:

[![multiple folder inheritance diagram](https://cdn.rawgit.com/yahoo/mendel/master/docs/Multiple-folder-inheritance-resolution.svg)](../../docs/Multiple-folder-inheritance-resolution.svg)

---
_Source: https://npm.io/package/mendel-treenherit · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
