hummus-recipe
Version:
A powerful PDF tool for NodeJS based on HummusJS
54 lines (39 loc) • 1.83 kB
Markdown
# ast-transform [](https://flattr.com/submit/auto?user_id=hughskennedy&url=http://github.com/hughsk/ast-transform&title=ast-transform&description=hughsk/ast-transform%20on%20GitHub&language=en_GB&tags=flattr,github,javascript&category=software)[](http://github.com/hughsk/stability-badges) #
Convenience wrapper for performing AST transformations with
[browserify](http://browserify.org/) transform streams. Note that it doesn't
handle source maps nicely, though pull requests are welcome!
## Usage ##
[](https://nodei.co/npm/ast-transform)
### `ast(transform[, opts])` ###
Where `transform` is a function that takes a filename and returns a function,
e.g.:
``` javascript
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:
``` javascript
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](http://github.com/hughsk/ast-transform/blob/master/LICENSE.md) for details.