js-makedepend
Advanced tools
Comparing version 0.3.0 to 0.4.0
@@ -7,3 +7,3 @@ { | ||
// "warn" => 1 | ||
"root": true, | ||
@@ -244,5 +244,4 @@ "parserOptions": { | ||
"node": true, | ||
"mocha": true, | ||
"es6": true | ||
} | ||
} |
{ | ||
"name": "js-makedepend", | ||
"version": "0.3.0", | ||
"version": "0.4.0", | ||
"description": "Determines dependencies of javascript modules and saves them in a Makefile. A bit like makedepend does for C.", | ||
@@ -43,14 +43,14 @@ "bin": { | ||
"chai": "3.5.0", | ||
"codeclimate-test-reporter": "0.3.1", | ||
"eslint": "2.10.1", | ||
"codeclimate-test-reporter": "0.3.2", | ||
"eslint": "2.12.0", | ||
"intercept-stdout": "0.1.2", | ||
"istanbul": "0.4.3", | ||
"mocha": "2.4.5", | ||
"npm-check-updates": "2.6.4", | ||
"nsp": "2.3.3" | ||
"mocha": "2.5.3", | ||
"npm-check-updates": "2.6.7", | ||
"nsp": "2.4.0" | ||
}, | ||
"dependencies": { | ||
"acorn": "3.1.0", | ||
"acorn": "3.2.0", | ||
"commander": "2.9.0", | ||
"lodash": "4.12.0", | ||
"lodash": "4.13.1", | ||
"resolve": "1.1.7", | ||
@@ -57,0 +57,0 @@ "semver": "5.1.0" |
@@ -45,2 +45,3 @@ # js-makedepend | ||
-M, --system <items> list of module systems (default: amd,cjs,es6) | ||
-G , --dot visualizes dependencies in a graphiz dot | ||
``` | ||
@@ -175,5 +176,4 @@ ## Features by example | ||
### Selecting module systems: `--system` | ||
By `js-makedepend` runs through your sources thrice, once for every module | ||
system it knows. If you don't want that, specify the systems your interested in | ||
in a comma-separated list: | ||
By default `js-makedepend` runs through your sources thrice, once for every | ||
module system it knows. If you don't want that, specify the systems your interested in, in a comma-separated list: | ||
@@ -222,2 +222,17 @@ ```makefile | ||
``` | ||
## Visualizing the dependency graph | ||
Use `--dot` (or `-G`) to save the dependencies as a | ||
graphviz dot file: | ||
```shell | ||
js-makedepend --dot --exclude "(node_modules)" --output-to dot-output-sample.dot src | ||
``` | ||
You can use graphviz dot to transform it into something graphical: | ||
```shell | ||
dot -Tpng dot-output-sample.dot > dot-output-sample.png | ||
``` | ||
 | ||
## License | ||
@@ -224,0 +239,0 @@ [MIT](LICENSE) |
const program = require("commander"); | ||
const chewy = require("./chewy"); | ||
const main = require("./main"); | ||
const $package = require("../package.json"); | ||
@@ -23,2 +23,3 @@ const semver = require("semver"); | ||
.option("-M, --system <items>", "list of module systems (default: amd,cjs,es6)") | ||
.option("-G , --dot", "visualizes dependencies in a graphiz dot") | ||
.arguments("<directory-or-file>") | ||
@@ -28,3 +29,3 @@ .parse(process.argv); | ||
if (Boolean(program.args[0])) { | ||
chewy.main( | ||
main.main( | ||
program.args[0], | ||
@@ -31,0 +32,0 @@ program |
@@ -23,6 +23,6 @@ "use strict"; | ||
function extractCommonJSDependencies(pAST, pDependencies, pModuleSystem) { | ||
// var/const lalala = require('./lalala'); | ||
// require('./lalala'); | ||
// require('./lalala').doFunkyStuff(); | ||
walk.simple( | ||
@@ -161,4 +161,4 @@ pAST, | ||
return _(lDependencies) | ||
.uniqBy(pDependency => `${pDependency.moduleName}, ${pDependency.moduleSystem}`) | ||
.sortBy(pDependency => `${pDependency.moduleName}, ${pDependency.moduleSystem}`) | ||
.uniqBy(pDependency => `${pDependency.moduleName} ${pDependency.moduleSystem}`) | ||
.sortBy(pDependency => `${pDependency.moduleName} ${pDependency.moduleSystem}`) | ||
.map( | ||
@@ -188,60 +188,2 @@ pDependency => { | ||
function extractRecursive (pFileName, pOptions, pVisited) { | ||
pOptions = pOptions ? pOptions : {}; | ||
pVisited = pVisited || new Set(); | ||
pVisited.add(pFileName); | ||
let lRetval = {}; | ||
const lDependencies = extractDependencies(pFileName, pOptions); | ||
lRetval[pFileName] = lDependencies; | ||
lDependencies | ||
.filter(pDep => pDep.followable && !pVisited.has(pDep.resolved)) | ||
.forEach( | ||
pDep => { | ||
lRetval = _.merge( | ||
lRetval, | ||
extractRecursive(pDep.resolved, pOptions, pVisited) | ||
); | ||
} | ||
); | ||
return lRetval; | ||
} | ||
function _extractRecursiveFlattened(pFileName, pOptions, pVisited) { | ||
pOptions = pOptions ? pOptions : {}; | ||
pVisited = pVisited || new Set(); | ||
pVisited.add(pFileName); | ||
const lDependencies = extractDependencies(pFileName, pOptions); | ||
let lRetval = _.clone(lDependencies); | ||
lDependencies | ||
.filter(pDep => pDep.followable && !pVisited.has(pDep.resolved)) | ||
.forEach( | ||
pDep => { | ||
const lDep = _extractRecursiveFlattened(pDep.resolved, pOptions, pVisited); | ||
if (lDep){ | ||
lRetval = lRetval.concat(lDep); | ||
} | ||
} | ||
); | ||
return lRetval; | ||
} | ||
function extractRecursiveFlattened(pFileName, pOptions) { | ||
let lRetval = {}; | ||
lRetval[pFileName] = | ||
_(_extractRecursiveFlattened(pFileName, pOptions)) | ||
.uniqBy(pDep => pDep.resolved) | ||
.sortBy(pDep => pDep.resolved) | ||
.value(); | ||
return lRetval; | ||
} | ||
exports.extractDependencies = extractDependencies; | ||
exports.extractRecursive = extractRecursive; | ||
exports.extractRecursiveFlattened = extractRecursiveFlattened; | ||
exports.extractDependencies = extractDependencies; |
@@ -16,16 +16,2 @@ [ | ||
{ | ||
"module": "./extractor-fixtures/amd-recursive-flattened.json", | ||
"resolved": "test/extractor-fixtures/amd-recursive-flattened.json", | ||
"moduleSystem": "cjs", | ||
"coreModule": false, | ||
"followable": false | ||
}, | ||
{ | ||
"module": "./extractor-fixtures/amd-recursive.json", | ||
"resolved": "test/extractor-fixtures/amd-recursive.json", | ||
"moduleSystem": "cjs", | ||
"coreModule": false, | ||
"followable": false | ||
}, | ||
{ | ||
"module": "./extractor-fixtures/amd.json", | ||
@@ -38,16 +24,2 @@ "resolved": "test/extractor-fixtures/amd.json", | ||
{ | ||
"module": "./extractor-fixtures/cjs-flat.json", | ||
"resolved": "test/extractor-fixtures/cjs-flat.json", | ||
"moduleSystem": "cjs", | ||
"coreModule": false, | ||
"followable": false | ||
}, | ||
{ | ||
"module": "./extractor-fixtures/cjs-recursive.json", | ||
"resolved": "test/extractor-fixtures/cjs-recursive.json", | ||
"moduleSystem": "cjs", | ||
"coreModule": false, | ||
"followable": false | ||
}, | ||
{ | ||
"module": "./extractor-fixtures/cjs.json", | ||
@@ -54,0 +26,0 @@ "resolved": "test/extractor-fixtures/cjs.json", |
const expect = require('chai').expect; | ||
const extractor = require('../src/extractor'); | ||
const cjsFixtures = require('./extractor-fixtures/cjs.json'); | ||
const cjsRecursiveFixtures = require('./extractor-fixtures/cjs-recursive.json'); | ||
const cjsFlatFixtures = require('./extractor-fixtures/cjs-flat.json'); | ||
const es6Fixtures = require('./extractor-fixtures/es6.json'); | ||
const amdFixtures = require('./extractor-fixtures/amd.json'); | ||
const amdRecursiveFixtures = require('./extractor-fixtures/amd-recursive.json'); | ||
const amdRecursiveFlattenedFixtures = require('./extractor-fixtures/amd-recursive-flattened.json'); | ||
@@ -27,30 +23,5 @@ function runFixture(pFixture) { | ||
function runRecursiveFixture(pFixture) { | ||
it(pFixture.title, () => { | ||
expect( | ||
extractor.extractRecursive( | ||
pFixture.input.fileName, | ||
pFixture.input.options | ||
) | ||
).to.deep.equal(pFixture.expected); | ||
}); | ||
} | ||
function runRecursiveFlattenedFixture(pFixture) { | ||
it(pFixture.title, () => { | ||
expect( | ||
extractor.extractRecursiveFlattened( | ||
pFixture.input.fileName, | ||
pFixture.input.options | ||
) | ||
).to.deep.equal(pFixture.expected); | ||
}); | ||
} | ||
describe('CommonJS - ', () => cjsFixtures.forEach(runFixture)); | ||
describe('CommonJS recursive - ', () => cjsRecursiveFixtures.forEach(runRecursiveFixture)); | ||
describe('CommonJS recursive flattened - ', () => cjsFlatFixtures.forEach(runRecursiveFlattenedFixture)); | ||
describe('ES6 - ', () => es6Fixtures.forEach(runFixture)); | ||
describe('AMD - ', () => amdFixtures.forEach(runFixture)); | ||
describe('AMD recursive - ', () => amdRecursiveFixtures.forEach(runRecursiveFixture)); | ||
describe('AMD recursive flattened - ', () => amdRecursiveFlattenedFixtures.forEach(runRecursiveFlattenedFixture)); | ||
@@ -57,0 +28,0 @@ describe('Error scenarios - ', () => { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
164683
109
2493
243
2
15
+ Addedacorn@3.2.0(transitive)
+ Addedlodash@4.13.1(transitive)
- Removedacorn@3.1.0(transitive)
- Removedlodash@4.12.0(transitive)
Updatedacorn@3.2.0
Updatedlodash@4.13.1