Skip to content

Instantly share code, notes, and snippets.

@davidchambers
Created November 4, 2013 01:58
Show Gist options
  • Save davidchambers/7297030 to your computer and use it in GitHub Desktop.
Save davidchambers/7297030 to your computer and use it in GitHub Desktop.
Determine whether a JavaScript file is an AMD module
#!/usr/bin/env coffee
esprima = require 'esprima'
isModule = (source) ->
esprima.parse(source).body.some (node) ->
node.type is 'ExpressionStatement' and
node.expression.type is 'CallExpression' and
node.expression.callee.type is 'Identifier' and
node.expression.callee.name is 'define'
process.stdin.resume()
process.stdin.setEncoding('utf8')
source = ''
process.stdin.on 'data', (chunk) -> source += chunk
process.stdin.on 'end', -> process.stdout.write "#{isModule source}\n"
@davidchambers
Copy link
Author

$ echo 'define()' | ./ismodule
true

$ echo 'blah()' | ./ismodule
false

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment