transpilify v2.0.3
transpilify
Applies browserify transforms to your source code, without actually bundling it.
This is useful if you have a module that would typically use some browserify transforms (like glslify or browserify-css), but you would like to publish a bundler-agnostic distribution to npm.
work in progress
This module is still a work in progress and may be subject to more changes.
Install
With npm:
npm install -g transpilifyAPI Usage
transpile = createTranspiler([opt])
Returns a function, transpile, which creates a transform stream. The options:
transforma transform or array of transforms, same usage as browserifybasedirthe base directory used to resolve transform names from
The transform elements can be a string (local dependency) or function (conventional transform stream). You can use a tuple to specify the transform and its options. For example:
var transpiler = createTranspiler({
transform: [
// local dependency
'brfs',
// transform + options
[ 'glslify', { transform: [ 'glslify-hex' ] },
// transform function
require('babelify').configure({
presets: [ 'es2015' ]
})
]
})stream = transpiler(filename)
Creates a new transform stream for the given filename, reading it from disk.
For example:
var createTranspiler = require('transpilify')
var transpiler = createTranspiler({
transform: 'brfs'
})
transpiler('src/index.js')
.pipe(process.stdout)CLI Usage
Accepts a single file (to stdout or --out-file) or a single directory (to --out-dir).
# to stdout
transpilify src/index.js [opts]
# to file
transpilify src/index.js --out-file build.js [opts]
# transpile whole directory
transpilify src/ --out-dir dist/ [opts]Options:
--transform,-tare written like browserify CLI transforms; supports subarg- e.g.
--transform brfs
- e.g.
--out-file,-owrite results to a file--out-dir,-dtranspile directory & contents to destination--ignore,-ia pattern or array of glob patterns to ignore (will not emit files matching these globs)--extensions,-x- a list of comma-separated extensions to accept for transformation
- defaults to
".js,.jsx,.es6,.es"
--quietdo not print any debug logs to stderr
Browserify Examples
For example, we have a Node/Browser index.js file:
var fs = require('fs')
var str = fs.readFileSync(__dirname + '/hello.txt', 'utf8')
console.log(str)And our static file:
Hello, world!After installing brfs locally as a devDependency, we can transpile:
transpilify index.js --transform brfs > dist/index.jsThe resulting dist/index.js file will have the contents statically inlined, without any additional overhead of a traditional bundler.
console.log("Hello, world!")Another example, using babelify and presets:
transpilify index.js -t [ babelify --presets [ es2015 react ] ] > bundle.jsCustom Transform Example
Say you want a simple transform for your Node/Browser/whatever module, without the complexities of a bundler, babel plugins, or what have you.
Add a transform:
// uppercase.js
var through = require('through2')
module.exports = function (filename) {
return through(function (buf, enc, next) {
next(null, buf.toString().toUpperCase())
})
}Now you can reference the uppercase.js file during transpilation:
transpilify index.js -t ./uppercase.jsThis will uppercase your entire source file.
Roadmap / TODO
- Investigate better source map support