acorn-umd
Parse acorn ast for AMD, CommonJS, and ES6 definitions.
The Nodes created align as closely as possible with the nodes generated for acorns ES6 import nodes. Example below
var acorn = ;var umd = ; var code = ` import {a, b, c as d} from 'library'; import foo from 'foo-library'; let _ = require('lodash');`; var ast = acorn;var imports = ; console;
type: 'CJSImport' reference: type: 'VariableDeclaration' start: 87 end: 113 declarations: Object kind: 'let' specifiers: Object start: 87 end: 113 source: type: 'Literal' reference: Object value: 'lodash' raw: '\'lodash\'' start: 103 end: 111 type: 'ImportDeclaration' start: 5 end: 42 specifiers: Object Object Object source: type: 'Literal' start: 32 end: 41 value: 'library' raw: '\'library\'' type: 'ImportDeclaration' start: 47 end: 77 specifiers: Object source: type: 'Literal' start: 63 end: 76 value: 'foo-library' raw: '\'foo-library\''
AMD Imports
let code = ` foo(); define(['foo', 'unused-import'], function($) { return $(); });`; let ast = acorn;let parsed = ; console; type: 'AMDImport' reference: DEFINE_NODE start: 12 end: 81 specifiers: type: 'Identifier' start: 54 end: 55 name: '$' sources: type: 'Literal' reference: Object value: 'foo' raw: '\'foo\'' start: 20 end: 25 type: 'Literal' reference: Object value: 'unused-import' raw: '\'unused-import\'' start: 27 end: 42 // Grouped [source, variable] name array imports: SOURCE_NODE VARIABLE_NODE SOURCE_NODE undefined
Get the scope of a node
import {sample} from 'lodash'
let parsed = umd(ast, {
es6: false, amd: true, cjs: false
});
let node = sample(parsed);
let scope = node.scope; // scope is null if global otherwise a function node