prepin
An in-place pre-processor for javascript files using C style pre-compile syntax to compose custom builds from npm-packages.
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:
// #ifndef smallconst big = // #else// # let big // define the alternative// #endif if big // ...
If processing with prepin -m small sample.js
you'll get:
// #ifndef small// # const big = require('./big-package')// #elselet big // define the alternative// #endif if big // ...
CLI
prepin [options] [file]
Options:
-m macro=1 define macro
-o <output> 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
const Prepin = const opts = macros: small: true input: 'sample.js' output: 'sample.js' opts