amdextract
Version:
Uses AST to extract AMD modules, their parts and an optimized output without unused dependencies while keeping the original format.
146 lines (112 loc) • 4.04 kB
Markdown
Uses AST to extract AMD modules, their parts and an optimized output without unused dependencies while keeping the original format.
source.js
```js
define('module1', ['p1', 'p2'], function (a, b) {
/**
* b is not used in this scope.
*/
return (function(b) {
return b;
})(a);
});
define('module2', ['p1', 'p2', 'p3', 'p4'], function (a, b, c) {
return b;
});
```
example.js
```js
var fs = require('fs');
var amdextract = require('amdextract');
var content = fs.readFileSync('source.js');
var result = amdextract.parse(content);
console.log(result.results.length + ' modules detected.');
result.results.forEach(function (r) {
console.log('Unused paths: ' + r.unusedPaths.join(', '));
});
console.log('\nOptimized output:');
console.log(result.optimizedContent);
```
output
```
2 modules detected.
Unused paths: p2
Unused paths: p1, p3, p4
Optimized output:
define('module1', ['p1'], function (a) {
/**
* b is not used in this scope.
*/
return (function(b) {
return b;
})(a);
});
define('module2', ['p2'], function (b) {
return b;
});
```
Type: string
JavaScript source for parsing.
Type: Array
Default value: []
An array of strings or RegExps that represent dependency names that should not take into account.
Type: Array
Default value: []
An array of strings or RegExps that represent dependency paths that should not take into account.
NOTE: `exceptsPaths` can also be declared before each module definition as a comment of strings of module paths separated by commas. This only applies on the underlying module definition.
source.js
```js
/* exceptsPaths: p3 */
define(['p1', 'p2', 'p3'], function (a, b, c) {
return b;
});
```
optimized-source.js
```js
/* exceptsPaths: p3 */
define(['p2', 'p3'], function (b, c) {
return b;
});
```
Type: Boolean
Default value: false
Removes unused dependencies from `content` and returns optimized content as `optimizedContent` property of result.
Returns an object with the following properties:
Type: Array
An array of hash objects witch have this properties for each AMD module detected in `content`:
- `moduleId`
- `paths`
- `dependencies`
- `unusedPaths`
- `unusedDependencies`
Type: String
Optimized `content` (original content without unused dependencies).
This property is available when the value of option `removeUnusedDependencies` is true.
* 2015-12-27 v2.1.14 Remove "for in" loop in traverse.
* 2015-12-26 v2.1.13 Remove unused function "extendRange".
* 2015-12-26 v2.1.12 Fixed indentation of samples in README.md.
* 2015-12-26 v2.1.11 Fixed a bug in "optimizedContent" property.
* 2015-07-25 v2.1.10 Update travis CI.
* 2015-07-25 v2.1.9 Update dependencies.
* 2015-04-15 v2.1.8 Update README.
* 2014-08-22 v2.1.6 Fix a bug when there are comments between paths and dependencies.
* 2014-08-16 v2.1.0 Entirely uses AST.
* 2014-07-21 v2.0.3 Fix an issue related to comment detection.
* 2014-07-21 v2.0.2 Fix an issue related to RegExp literals.
* 2014-07-20 v2.0.0 Uses AST to find out unused dependencies.
* 2014-04-19 v1.1.0 Keeps the original separators of paths and dependencies.
* 2014-04-09 v1.0.4 Fix a bug when dependencies length is grater than paths length.
* 2014-03-29 v1.0.3 Fix a bug when specifying exceptsPaths in options only.
* 2014-03-17 v1.0.0 First release.