1 | var babel = require("babel-core");
|
2 |
|
3 | function parseNode(node) {
|
4 | if (!node) {
|
5 | return;
|
6 | }
|
7 |
|
8 | if (node.type === "CallExpression" && node.callee.name === "require") {
|
9 | return node.arguments[0].value;
|
10 | }
|
11 |
|
12 | if (node.type === "ExpressionStatement") {
|
13 | return parseNode(node.expression);
|
14 | }
|
15 |
|
16 | if (node.type === "ImportDeclaration") {
|
17 | return node.source.value;
|
18 | }
|
19 |
|
20 | if (node.type === "VariableDeclaration") {
|
21 | return parseNode(node.declarations[0].init);
|
22 | }
|
23 | };
|
24 |
|
25 | module.exports.parse = function parse(source) {
|
26 | var result = babel.transform(source);
|
27 | var dependencies = result.ast.program.body.map(parseNode).filter(Boolean);
|
28 |
|
29 | return dependencies;
|
30 | };
|