An open API service indexing awesome lists of open source software.

https://github.com/commenthol/prepin

An in-place pre-processor for javascript files using C style pre-compile syntax to compose custom builds from npm-packages
https://github.com/commenthol/prepin

Last synced: about 17 hours ago
JSON representation

An in-place pre-processor for javascript files using C style pre-compile syntax to compose custom builds from npm-packages

Awesome Lists containing this project

README

          

# prepin

> An in-place pre-processor for javascript files using C style pre-compile
syntax to compose custom builds from npm-packages.

[![NPM version][badge]][repo]

Pre-processors found on [npm][] require a different file for outputting
processed changes. This is not ideal for in-place custom builds on already
published packages. This pre-processors main purpose is to allow reduction of
package size for e.g. single-page apps on not requiring modules based on macros
given at transpile time.

## Syntax

Follows C style pre-compiler syntax but requires `//` right in front to work in
.js files.

```
// #if expression // e.g. // #if macro == 1
// #if defined(macro)
// #ifdef macro
// #ifndef macro
// #elif expression // e.g. // #elif macro == 2
// #else
// #endif
// # is a commented line
```

## Example

Let's assume a `example/sample.js` file, which includes a package of large size which is
required for a specific task is not used in a smaller custom build...

The original file:

```js
// #ifndef small
const big = require('./big-package')
// #else
// # let big // define the alternative
// #endif

if (big) {
// ...
}
```

If processing with `prepin -m small sample.js` you'll get:

```js
// #ifndef small
// # const big = require('./big-package')
// #else
let big // define the alternative
// #endif

if (big) {
// ...
}
```

## CLI

```
prepin [options] [file]

Options:

-m macro=1 define macro
-o write output to file

Examples:

cat sample.js | prepin -m small
reads from stdin and transpiles using macro "small", writes to stdout.

prepin -m small=1 -m other sample.js
pre-process with macros small=1, other on sample.js
```

## API

```js
const Prepin = require('prepin')

const opts = {macros: {small: true}, input: 'sample.js', output: 'sample.js'}

new Prepin(opts).proc().catch((e) => console.error(e))
```

## License

[UNLICENSE][]

[badge]: https://badge.fury.io/js/prepin.svg
[repo]: https://www.npmjs.com/package/prepin

[npm]: https://npmjs.org
[UNLICENSE]: http://unlicense.org