Uses AST to extract AMD modules, their parts and an optimized output without unused dependencies while keeping the original format.
source.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
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
/* exceptsPaths: p3 */
define(['p1', 'p2', 'p3'], function (a, b, c) {
return b;
});
optimized-source.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.