ng-dependencies
Version:
> Analyze javascript code using [esprima](https://github.com/ariya/esprima) and return a list of objects representing the module dependencies in the code.
66 lines (52 loc) • 1.71 kB
Markdown
> Analyze javascript code using [esprima](https://github.com/ariya/esprima) and return a list of objects representing the module dependencies in the code.
This is based on [gulp-angular-filesort](https://github.com/klei/gulp-angular-filesort). I extracted the module dependency code because I need to find a way to dynamically generate a root angular module that depends on a list of angular modules as Bower packages.
```js
var fs = require('fs');
var ngDeps = require('ng-dependencies');
var deps = ngDeps(fs.readFileSync('./someNgModule.js'));
console.log(deps);
```
If the content of `./someNgModle.js` is as following:
```js
angular.module('test', ['one']).run(function () {
// run some logic
});
angular.module('another', []);
angular.module('another').Controller('Ctrl', ['$scope', function ($scope) {
// some controller logic
}]);
angular.module('useThis').run(function () {
// ...
});
```
This will output:
```js
{
dependencies: ['one', 'useThis'],
modules: {
'test': ['one'],
'another': []
}
}
```
If multiple declarations of the same module is encountered, (according to [Angular Doc](https://docs.angularjs.org/guide/module)), the later declaration will overwrite any existing module that is declared with the same module name.
For example, the following content:
```js
angular.module('test', ['one']);
angular.module('test', ['another']);
```
will output:
```js
{
dependencies: ['another'],
modules: {
'test': ['another']
}
}
```
0.1.1 - fixing repo url in `package.json` and removing unnecessary dependency.
0.1.0 - simplified output format; added detection for angular.js itself.