You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
typesetting/pitfall/pdfkit/node_modules/ast-transform/README.md

54 lines
1.8 KiB
Markdown

7 years ago
# ast-transform [![Flattr this!](https://api.flattr.com/button/flattr-badge-large.png)](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)[![experimental](http://hughsk.github.io/stability-badges/dist/experimental.svg)](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 ##
[![ast-transform](https://nodei.co/npm/ast-transform.png?mini=true)](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.