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
- Host: GitHub
- URL: https://github.com/commenthol/prepin
- Owner: commenthol
- License: unlicense
- Created: 2017-06-10T07:48:55.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2019-05-10T15:14:01.000Z (about 7 years ago)
- Last Synced: 2025-10-18T09:32:49.021Z (8 months ago)
- Language: JavaScript
- Size: 14.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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