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.
54 lines
1.8 KiB
Markdown
54 lines
1.8 KiB
Markdown
# 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.
|