node package manager
Easy collaboration. Discover, share, and reuse code in your team. Create a free org »


ast-transform Flattr this!experimental

Convenience wrapper for performing AST transformations with browserify transform streams. Note that it doesn't handle source maps nicely, though pull requests are welcome!



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!' }

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')
  .pipe(fs.createWriteStream(__filename + '/bundle.js'))


MIT. See for details.