prepin
v1.0.3
Published
An in-place pre-processor for javascript files using C style pre-compile syntax to compose custom builds from npm-packages
Downloads
656,212
Maintainers
Readme
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 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:
// #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 <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 = require('prepin')
const opts = {macros: {small: true}, input: 'sample.js', output: 'sample.js'}
new Prepin(opts).proc().catch((e) => console.error(e))