# cmpl

> no deps, no operations, no vowels - just a tiny compiler

Latest version **0.7.0** (published 2023-05-03) · MIT license · 0 weekly downloads

## Install

```sh
npm install cmpl
pnpm add cmpl
yarn add cmpl
bun add cmpl
```

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.7.0 |
| Published | 2023-05-03 |
| First published | 2022-06-02 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 356.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Hannes Diercks |
| Maintainers | xiphe |
| Keywords | compiler, tiny, no-deps, copy, files, transform, rename, hash |

## Links

- npm: https://www.npmjs.com/package/cmpl
- Repository: https://github.com/Xiphe/cmpl
- Homepage: https://github.com/Xiphe/cmpl#readme
- Issues: https://github.com/Xiphe/cmpl/issues
- npm.io page: https://npm.io/package/cmpl

## Alternatives

- [unionfs](https://npm.io/package/unionfs.md) — 2.2M weekly downloads
- [path-starts-with](https://npm.io/package/path-starts-with.md) — 35.9K weekly downloads
- [redzip](https://npm.io/package/redzip.md) — 1.2K weekly downloads
- [vscode-anymatch](https://npm.io/package/vscode-anymatch.md) — 848 weekly downloads
- [@ledgerhq/coin-filecoin](https://npm.io/package/@ledgerhq/coin-filecoin.md) — 793 weekly downloads

## Recent versions

- 0.7.0 (latest) — 2023-05-03
- 0.6.0 — 2023-05-03
- 0.5.0 — 2022-08-07
- 0.4.0 — 2022-08-07
- 0.3.2 — 2022-08-07
- 0.3.1 — 2022-08-07
- 0.3.0 — 2022-08-07
- 0.2.0 — 2022-06-21
- 0.1.1 — 2022-06-09
- 0.1.0 — 2022-06-07
- 0.0.6 — 2022-06-02
- 0.0.5 — 2022-06-02
- 0.0.4 — 2022-06-02
- 0.0.3 — 2022-06-02
- 0.0.2 — 2022-06-02
- … 1 more at https://npm.io/package/cmpl/versions

## README

# cmpl

> no deps, no operations, no vowels

just a tiny framework to apply transformations and renaming to single files
or files in a folder. You know because gulp is to old and stuff...

this one makes 0 assumptions on the content/type of a file and by default
just copies over the entry to outDir.

I've build this for cases where a big and complex compiler is just overkill
and if we think this misses a feature we're probably better of using a real
project like esbuild, microbundle or webpack.

## Install

```
npm install cmpl
```

## Usage

```ts
import { cmpl, wtch, CmplOptions } from 'cmpl';

const options: CmplOptions = {
  /* path to entry file or directory */
  entry: __dirname + '/src',
  /* list of file processors, these run in parallel */
  processors: [
    {
      /* path to directory where files should be moved to */
      outDir: __dirname + '/dist',
      /* if entry is directory, do we care about child dirs? */
      // recursive?: boolean; // default: true
      /* function to transform file contents */
      // transform?: TransformFn; // default: no-op
      /* function to determine the output name based on input name and
         transformed content */
      // rename?: FileNamerFn; // default: no-op
      /* filter function to determine if a file should be included */
      // include?: (name: string) => boolean; // default: () => true
    },
  ],
  /* custom node:path implementation */
  // path?: Path | Promise<Path>; // default: import('node:path')
  /* custom node:fs/promises implementation */
  // fs?: Fs | Promise<Fs>; // default: import('node:fs/promises')
};

// copies all files in __dirname into ./out
const mnfst = await cmpl(options);
console.log(mnfst);

// copies all files in __dirname into ./out and update when files change
const ac = new AbortController();
for await (const mnfst of wtch({
  signal: ac.signal,
  ...options,
})) {
  console.log(mnfst);
}
```

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