https://github.com/node-modules/shameimaru
Shameimaru Aya likes to traverse node_modules and capture the tree.
https://github.com/node-modules/shameimaru
dependencies-tree shameimaru traverser
Last synced: 13 days ago
JSON representation
Shameimaru Aya likes to traverse node_modules and capture the tree.
- Host: GitHub
- URL: https://github.com/node-modules/shameimaru
- Owner: node-modules
- License: mit
- Created: 2018-06-11T04:37:46.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2021-03-17T09:13:06.000Z (over 4 years ago)
- Last Synced: 2025-05-23T08:53:03.134Z (about 1 month ago)
- Topics: dependencies-tree, shameimaru, traverser
- Language: JavaScript
- Size: 1.74 MB
- Stars: 26
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: History.md
- License: LICENSE
Awesome Lists containing this project
README
# Shameimaru.js
[](https://www.npmjs.org/package/shameimaru)
[](https://www.npmjs.org/package/shameimaru)
[](https://travis-ci.org/node-modules/shameimaru)
[](https://coveralls.io/r/node-modules/shameimaru?branch=master)
[](https://www.npmjs.org/package/shameimaru)
[](https://david-dm.org/node-modules/shameimaru)Shameimaru Aya likes to traverse node_modules and capture the tree.

## Installation
```shell
$ npm install --save shameimaru
```## Usage
```js
const Shameimaru = require("shameimaru");const shameimaru = new Shameimaru("");
```> `` is the root path which contains **node_modules** of your project.
After create the `Shameimaru` instance, you can do `traverse()` through it.
```js
const ret = await shameimaru.traverse();
```Then you'll get a may-flatten graph-form tree. e.g.
```json
{
"@crand/mt19937": {
"ref": "5c2f5c96-9c29-4f3f-8cc1-ec6ab1f4025b",
"name": "@crand/mt19937",
"version": "2.0.0",
"from": "@crand/[email protected]",
"resolved": "http://registry.npm.taobao.org/@crand/mt19937/download/@crand/mt19937-2.0.0.tgz",
"exists": true,
"rawSpec": "*"
},
"any-promise": {
"ref": "78325895-5945-4180-97dd-a01c705b254e",
"name": "any-promise",
"version": "0.2.0",
"from": "[email protected]",
"resolved": "http://registry.npm.taobao.org/any-promise/download/any-promise-0.2.0.tgz",
"exists": true,
"rawSpec": "0.2.0"
},
"mz": {
"ref": "63bb611b-232d-4f7a-ba53-3322670ed170",
"name": "mz",
"version": "2.7.0",
"from": "[email protected]",
"resolved": "http://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz",
"exists": true,
"rawSpec": "^2.7.0",
"dependencies": {
"any-promise": {
"ref": "41f0b04f-0904-432f-aa33-13e5cbb8fcdc",
"name": "any-promise",
"version": "1.3.0",
"from": "[email protected]",
"resolved": "http://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz",
"exists": true,
"rawSpec": "^1.0.0"
}
},
...
},
...
}
```Each element in the result may contains keys as below:
+ `ref`: a random referrence sign in this tree, it's unique; e.g. `63bb611b-232d-4f7a-ba53-3322670ed170`
+ `name`: the name of this package (dependency); e.g. `toshihiko`
+ `version`: the name of this package (dependency); e.g. `2.7.0`
+ `from`: same as `_from` in installed **package.json**; e.g. `mz@^2.0.0`
+ `resolved`: same as `_resolved` in installed **package.json**; `http://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz`
+ `exists`: whether it's really exist in current tree folder; e.g. `true`
+ `ancestor`: if it matches a exactly the same package at any upper directory, it indicates that element's `ref`; e.g. `63bb611b-232d-4f7a-ba53-3322670ed170`
+ `rawSpec`: the raw spec of this package in its parent's **package.json**; e.g. `^2.0.0`
+ `adjustHere`: this package is not need by its parent, but some package need it flatten here; e.g. `true`
+ `missing`: if we can't find this package at any right path, then it will be `true`; e.g. `true`## Contribute
You're welcome to fork and make pull requests!