Skip to content
Convenience wrapper for performing AST transformations with browserify transform streams
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE.md
README.md
index.js
package.json

README.md

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!

Usage

ast-transform

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.

You can’t perform that action at this time.