{"_id":"@automattic/effective-module-tree","_rev":"172-50d704ddf6e29bd0c8d673c64e59ed52","name":"@automattic/effective-module-tree","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"@automattic/effective-module-tree","version":"0.0.1","keywords":["dependencies","node_modules"],"author":{"name":"Automattic Inc."},"license":"GPL-2.0-or-later","_id":"@automattic/effective-module-tree@0.0.1","maintainers":[{"name":"scinos","email":"sergio.cinos@gmail.com"},{"name":"pandah3","email":"joanne.lee0099@gmail.com"},{"name":"jblz","email":"jeffreykbowen@gmail.com"},{"name":"jeffikus","email":"jeffikus@gmail.com"},{"name":"bms","email":"brandon.m.skinner@gmail.com"},{"name":"chaosexanima","email":"me@echonyc.name"},{"name":"tyxla","email":"tyxla@abv.bg"},{"name":"porada","email":"dominik@porada.co"},{"name":"sgomes","email":"mail@sgomes.io"},{"name":"hanifn","email":"hanif@automattic.com"},{"name":"dchymko","email":"dchymko@Infometrix.ca"},{"name":"jeherve","email":"jeremy@tagada.hu"},{"name":"enej","email":"enej.bajgoric@automattic.com"},{"name":"jsnajdr","email":"jsnajdr@gmail.com"},{"name":"beaucollins","email":"beaucollins@gmail.com"},{"name":"blowery","email":"ben@blowery.org"},{"name":"tug","email":"dekervit@gmail.com"},{"name":"elazzabi","email":"elazzabi.ahmed@gmail.com"},{"name":"quasistar","email":"gabriel.sambarino@automattic.com"},{"name":"mjangda","email":"batmoo@gmail.com"},{"name":"undemian","email":"undemian@gmail.com"},{"name":"a8c","email":"vip@matticspace.com"},{"name":"ockham","email":"ockham@raz.or.at"},{"name":"sirreal","email":"jon.surrell@gmail.com"},{"name":"gwwar","email":"kerryliu@gmail.com"},{"name":"vindl","email":"markoandrijasevic@gmail.com"},{"name":"rodrigoia8c","email":"rodrigo.iloro@automattic.com"},{"name":"joshbetz","email":"j@joshbetz.com"},{"name":"nickdaugherty","email":"ndaugherty987@gmail.com"}],"homepage":"https://github.com/Automattic/wp-calypso#readme","bugs":{"url":"https://github.com/Automattic/wp-calypso/issues"},"bin":{"effective-module-tree":"cli.js"},"dist":{"shasum":"f642c8034b42f10dedd645a7c78b533a1a965609","tarball":"https://registry.npmjs.org/@automattic/effective-module-tree/-/effective-module-tree-0.0.1.tgz","fileCount":8,"integrity":"sha512-p/3p1vCve2egb1t9z+PUP8QtHimjHcvWFIjH1fDKoDgRvNU8Pdd4iEiOhnb8MjyqLd/O3dzvmK1t76YLxfHHJQ==","signatures":[{"sig":"MEQCIBCydVLrVDxewTU+QrD4ait1L0KoWyTJiOllCRQnLiurAiA9s82+MuzGMR4ljxbIvAbW1P/k23O+er5LTBxA19HfpQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeZ39eCRA9TVsSAnZWagAA9lIP/1XsHQLPT11Qhxr0AJbj\njFTwBmrVsZW+DYrIsWDy2aibD4d8Ya7Q78qbR3wIclD25+wgGPshjc+Qqu5r\n4AjA9yOb/MZAgam/8NnaMOWc75XXvQNE1g9cJpHNpRAw322k2krPVn0LtjnT\ntk+F9iZiH55bIQJZk5xbNK5NZIdW0gcYFmu4PT7CQlvQb0OSjurKIsyWouU0\nm+3fZZsR4SZ87njhsYuk3Sy3Gvpke3Lve2X11XI4GYnWy5Mvl4i60ZkHfGeo\naTrwf/crJbds7WK5Mr0RLMEmFvXRErq7F/Z+/+s5RhSqNnkCYiog4YPTx3FY\nzw0wvkknGyTni4j2XlDvCdMCWDmi+CIC7tjopvs0Un7hRfuLOGkDG7aGjsx5\nH8bO5BrgrlEeG0NVyWXUazqaTkEXlrGm1aStLrRmkHPMRKBz5dEwh5URO+RV\nnk7+4S0IGOfDqZDKvjg7OUrDwYBvD1VEKVHiVJhY2EVzkkZMPj5gSF91eZne\nBGuoOJyhEt1wFKrBX1OgqMssSGY22S3n6zDWYJMhj0qW/4zMOAu9/BczkB2X\nXwYne0rjr7B3FDO9j2B8ElMYJWZ9AdwI+fnSuEpVaGG8d3PaOCyH5AZBFGea\n5LaszYDxnCFYuWhA3EIrMCLv4ysNKOb2xhqgN4VqHHzpx76iqlg1GdFMg3Ra\nEnMU\r\n=WNee\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"81b9f04ebc5eff2b8681a449839549d5ab42e867","_npmUser":{"name":"scinos","email":"sergio.cinos@gmail.com"},"repository":{"url":"git+https://github.com/Automattic/wp-calypso.git","type":"git","directory":"packages/effective-module-tree"},"_npmVersion":"lerna/3.20.2/node@v12.15.0+x64 (darwin)","description":"A tool to generate the effective list of dependencies of any project","directories":{},"_nodeVersion":"12.15.0","dependencies":{"debug":"^4.1.1","yargs":"^15.1.0","object-treeify":"^1.1.23"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/effective-module-tree_0.0.1_1583841117562_0.009223997496319303","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"@automattic/effective-module-tree","version":"0.1.0","keywords":["dependencies","node_modules"],"author":{"name":"Automattic Inc."},"license":"GPL-2.0-or-later","_id":"@automattic/effective-module-tree@0.1.0","maintainers":[{"name":"a8c","email":"vip@matticspace.com"},{"name":"beaucollins","email":"beaucollins@gmail.com"},{"name":"blowery","email":"ben@blowery.org"},{"name":"bms","email":"brandon.m.skinner@gmail.com"},{"name":"chaosexanima","email":"me@echonyc.name"},{"name":"dchymko","email":"dchymko@Infometrix.ca"},{"name":"elazzabi","email":"elazzabi.ahmed@gmail.com"},{"name":"enej","email":"enej.bajgoric@automattic.com"},{"name":"gwwar","email":"kerryliu@gmail.com"},{"name":"hanifn","email":"hanif@automattic.com"},{"name":"jblz","email":"jeffreykbowen@gmail.com"},{"name":"jeffikus","email":"jeffikus@gmail.com"},{"name":"jeherve","email":"jeremy@tagada.hu"},{"name":"joshbetz","email":"j@joshbetz.com"},{"name":"jsnajdr","email":"jsnajdr@gmail.com"},{"name":"mjangda","email":"batmoo@gmail.com"},{"name":"nickdaugherty","email":"ndaugherty987@gmail.com"},{"name":"ockham","email":"ockham@raz.or.at"},{"name":"pandah3","email":"joanne.lee0099@gmail.com"},{"name":"porada","email":"dominik@porada.co"},{"name":"quasistar","email":"gabriel.sambarino@automattic.com"},{"name":"rodrigoia8c","email":"rodrigo.iloro@automattic.com"},{"name":"scinos","email":"sergio.cinos@gmail.com"},{"name":"sgomes","email":"mail@sgomes.io"},{"name":"sirreal","email":"jon.surrell@gmail.com"},{"name":"tug","email":"dekervit@gmail.com"},{"name":"tyxla","email":"tyxla@abv.bg"},{"name":"undemian","email":"undemian@gmail.com"},{"name":"vindl","email":"markoandrijasevic@gmail.com"},{"name":"yuliyan","email":"mail@yuliyan.info"}],"homepage":"https://github.com/Automattic/wp-calypso#readme","bugs":{"url":"https://github.com/Automattic/wp-calypso/issues"},"bin":{"effective-module-tree":"cli.js"},"dist":{"shasum":"5ba516505d12fbfc11645d96ee839c08a8e06452","tarball":"https://registry.npmjs.org/@automattic/effective-module-tree/-/effective-module-tree-0.1.0.tgz","fileCount":9,"integrity":"sha512-HphZAcrO+ss344S4AwhXERRHUmcgT8DHZkO50V5NOaqdS9UUCemTxgl33ZB3mcPbTNjOFGQSkovl+TsA/s43lw==","signatures":[{"sig":"MEYCIQCuMaKE1uRm/RCKNZgbSFmXsRUgx8gReY+rAm9c+pn1mgIhANezGcDmqj89SWSd/6JsjQldNth5tYFi1EkPejEt9Hud","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelhntCRA9TVsSAnZWagAAAXYQAJpp1vIPyl22v9Kgt7/p\nV7m9XhIHVMr4NJ3K8AgjGwkHoajYwcQEODMWh+n51CLl3xbPigZxOFfaeVh6\nnh07lADt/M+56/4TWZYxzO+5jW1e2kEh+0riN+aKS3aTGT7OKPL6WfKhaj1y\nH7RpJXKq3HW+GWI5IzICBqbQB2pnwTaKIj6Qx1EBNtjoHmNiQuwpo4nKp7Tl\nuX0q+QdFYUjJn6fcOJYcmTcWvmlIulH7GtZ6WMM7qp+ubLC2XUqqaTNMxCYM\ncWzcnOxWNJ+NPKhmb7sRd9LeefsSCQX79QSEMG9pGj19EndV9QoK27YVKR/3\nZHoM4bO6MrASrCyaqDlhd++fd6UMRFiW9kPyaG579PZzSjdZfev5ia9tT9cW\ncYMpKwbmocNcuECHbu9jXJynkbvE6MyZJ+1GBhiQnnVSdI9roSpQ+lLwcFfy\n18nfDOnA38VHxSJwcdZwl7HTXSeyZ02QexTzW8c7lenRHkAE3OSA1dSJIKxI\n0tc4LBS6jeX2m/Cw1TW+LdGZkXYbp3oki4J8wSAHdCYEyLs6A7WjXxdpSBQO\np2/efdusO7B5d6Lw+Qe/imGkCpG3puERQBSJDmZKAeQsRLz9ctJgD+tGOS8F\nfR6/sBokNnk45ylj7OPwhZ4KyLMjRDlXW1BYed9BFhcBwFtIr8Xxc1ab/N9w\nZ2SX\r\n=hV5r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"0bd49e7d1976f211a7ca862c731b06a4c948873b","_npmUser":{"name":"scinos","email":"sergio.cinos@gmail.com"},"repository":{"url":"git+https://github.com/Automattic/wp-calypso.git","type":"git","directory":"packages/effective-module-tree"},"_npmVersion":"lerna/3.20.2/node@v12.15.0+x64 (darwin)","description":"A tool to generate the effective list of dependencies of any project","directories":{},"_nodeVersion":"12.15.0","dependencies":{"debug":"^4.1.1","yargs":"^15.1.0","object-treeify":"^1.1.23"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/effective-module-tree_0.1.0_1586895341058_0.32187444956761935","host":"s3://npm-registry-packages"}}},"time":{"created":"2020-03-10T11:51:57.323Z","modified":"2026-09-25T20:23:58.366Z","0.0.1":"2020-03-10T11:51:57.690Z","0.1.0":"2020-04-14T20:15:41.191Z"},"bugs":{"url":"https://github.com/Automattic/wp-calypso/issues"},"author":{"name":"Automattic Inc."},"license":"GPL-2.0-or-later","homepage":"https://github.com/Automattic/wp-calypso#readme","keywords":["dependencies","node_modules"],"repository":{"url":"git+https://github.com/Automattic/wp-calypso.git","type":"git","directory":"packages/effective-module-tree"},"description":"A tool to generate the effective list of dependencies of any project","maintainers":[{"email":"maciej.brencz@gmail.com","name":"macbre"},{"email":"yuliyan.slavchev@gmail.com","name":"yuliyan"},{"email":"batmoo@gmail.com","name":"mjangda"},{"email":"jetpack+engineering@automattic.com","name":"matticbot"},{"email":"invoices@automattic.com","name":"a8c"},{"email":"ben@blowery.org","name":"blowery"},{"email":"chris@ehg.sh","name":"ehg_"},{"email":"mail@sgomes.io","name":"sgomes"},{"email":"tyxla@abv.bg","name":"tyxla"},{"email":"sarosh.aga@automattic.com","name":"saroshaga"},{"email":"nejc.lovrencic@gmail.com","name":"nejclovrencic"},{"email":"payton@foolord.com","name":"sirbrillig"},{"email":"chris@zarate.org","name":"chriszarate"},{"email":"robersonccgomes@gmail.com","name":"robersongomes"},{"email":"johng75@gmail.com","name":"johngodley"},{"email":"jeremy@tagada.hu","name":"jeherve"},{"email":"dale@automattic.com","name":"daledupreez-a8c"},{"email":"todd.wright@automattic.com","name":"t2dw4t"},{"email":"luis.mulinari@gmail.com","name":"luismulinari"},{"email":"andrea.grassi@automattic.com","name":"andrea-sdl"},{"email":"elazzabi.ahmed@gmail.com","name":"elazzabi"},{"email":"fernando.fernandes@automattic.com","name":"fmfernandes"},{"email":"jon.surrell@gmail.com","name":"sirreal"},{"email":"volodymyr@wildwolf.name","name":"wwa"},{"email":"chihsuan.tw@gmail.com","name":"chihsuan"},{"email":"manzoorwani.jk@gmail.com","name":"manzoorwanijk"},{"email":"matias.emanuel.surdi@automattic.com","name":"msurdi-a8c"},{"email":"newspack@a8c.com","name":"newspack-npm"},{"email":"derek.smart@automattic.com","name":"dsmartg"},{"email":"kavin.keratikasama@automattic.com","name":"kthai15"},{"email":"berislav.grgicak@gmail.com","name":"bgrgicak"},{"email":"robert.sreberski@automattic.com","name":"robertsreberski_a8c"},{"email":"artur.piszek@gmail.com","name":"artpi"},{"email":"jugergo@gmail.com","name":"gmjuhasz"},{"email":"borkweb@gmail.com","name":"borkweb"},{"email":"kat3samsin@gmail.com","name":"kat3samsin"},{"email":"b.basto@gmail.com","name":"brunobasto"},{"email":"douglas.henri@automattic.com","name":"dhenridev"},{"email":"m@mrmurphy.dev","name":"mrmurphy"},{"email":"platform+npm@wpvip.com","name":"wpvip-bot"},{"email":"e.tobiesen@gmail.com","name":"etobiesen"},{"email":"omar@omaralshaker.com","name":"alshakero"},{"email":"arthur791004@gmail.com","name":"arthur791004"},{"email":"peter.petrov89@gmail.com","name":"dilirity"},{"email":"npmjs.corporate906@passinbox.com","name":"mehmoodak"},{"email":"natalia.vidal@automattic.com","name":"natalia.vidal"},{"email":"ivan.ottinger@automattic.com","name":"ivan.ottinger"},{"email":"anand.nalya@gmail.com","name":"anandnalya"},{"email":"anthony.arcangelini@gmail.com","name":"arcangelinis"},{"email":"rdsuarez@gmail.com","name":"retrofox"},{"email":"mayank.chugh@automattic.com","name":"iamchughmayank"},{"email":"mikael@ihminen.org","name":"simison"},{"email":"fredrik@fredrik.computer","name":"fredrikekelund"},{"email":"griffith.chen@automattic.com","name":"griffithchen"},{"email":"josh.boland@automattic.com","name":"jboland8"},{"email":"chriskmnds@gmail.com","name":"chriskmnds"},{"email":"ola@oandre.gal","name":"oandregal"},{"email":"galatanovidiu@gmail.com","name":"galatanovidiu"},{"email":"kangzjnet@gmail.com","name":"kangzj"},{"email":"lena@jaguchi.com","name":"_mirka_"},{"email":"andrew@andrewduthie.com","name":"aduth"},{"email":"emanuele.buccelli@automattic.com","name":"ebuccelli"}],"readme":"# effective-module-tree\n\nCLI tool that generates an ASCII tree with the representation of packages in `node_modules` and\ntheir dependencies. This works over the actual `node_modules` files, so you need to install your\ndependencies first (i.e. `npm install` or `yarn install`).\n\nIt generates the _logical_ representation of the tree. A package may appear multiple times if\nit is depended on by multiple packages, even if all point to the same file on the filesystem.\nIn other words, it \"un-hoist\" hoisted/deduped packages.\n\n## Why?\n\nUsually, the package manger has a way to list the dependencies (`npm ls` or `yarn list`). However\nthis includes deduplicated packages, and requires the presence of the lock file to generate the\ntree. This is the package manager's vision of the tree.\n\nSystem tools like `ls`, `find` or `tree` can generate a similar output, but those represent the\nfilesystem view of the tree. Depending on how effective the package manager is hoisting dependencies,\nthis view may not be comparable.\n\n`effective-module-tree` generates node's vision of the dependency tree. Is what node will find when\nrequiring dependencies, ignoring where the package physically live in the file system. This tree\nshould be consistent across package managers and different hoisting capabilities. As such, it can\nbe used to verify that the dependeny tree remains constant when migrating to a different package\nmanager.\n\n## Usage\n\nRun `effective-module-tree` in the root of your project.\n\nUse `effective-module-tree --root <path>` to print the tree in a different project. Example:\n\n```bash\neffective-module-tree --root \"./src/package.json\"\n```\n\nThis tool can generate either an ascii tree, or a list (easier to visualize dependency chains in\nbig trees). It can be specified with the flags `-o tree` or `-o list`.\n\nCheck out `effective-module-tree --help` for other flags and examples.\n\n## Troubleshooting\n\nInvoke the command with `DEBUG=effective-module-tree ./effective-module-tree` to get a verbose\nlog of what is going on.\n","readmeFilename":"README.md"}