ast-transform ![Flattr this!](https://camo.githubusercontent.com/f0d58d797e61b600bb2f7c88ff44967c2e62291d00873cb1d310ebde4812eede/68747470733a2f2f6170692e666c617474722e636f6d2f627574746f6e2f666c617474722d62616467652d6c617267652e706e67)
![experimental](https://camo.githubusercontent.com/11ce7fd952f2eae4e5467c7f6421660a373d19029c1ca071eb74c16669d2bff1/687474703a2f2f68756768736b2e6769746875622e696f2f73746162696c6974792d6261646765732f646973742f6578706572696d656e74616c2e737667)
Convenience wrapper for performing AST transformations with browserify transform streams. Note that it doesn't handle source maps nicely, though pull requests are welcome!
Usage
ast(transform[, opts])
Where transform
is a function that takes a filename and returns a function, e.g.:
var replace = require('replace-method')
var ast = require('ast-transform')
var path = require('path')
module.exports = ast(function (file) {
if (path.extname(file) !== '.js') return
return function(ast, done) {
// replace require calls with
// strings for some reason
replace(ast)(['require'], function(node) {
return { type: 'Literal', value: 'replaced!' }
})
done()
}
})
Note that you can return a falsey value instead of a function to bail the stream early and avoid the parse/deparse overhead. Here's an example of using the above with browserify:
var browserify = require('browserify')
var example = require('./example')
var fs = require('fs')
browserify('./index.js')
.transform(example)
.bundle()
.pipe(fs.createWriteStream(__filename + '/bundle.js'))
License
MIT. See LICENSE.md for details.