This is a simple tool to collect all production node modules used in a project. It supports npm, yarn1, pnpm and yarn berry(with node-modules).
It is useful to collect all production node modules for a electron project, so that you can easily to package them into electron asar.
- Get node modules tree from "npm list"(npm & yarn) or "pnpm list"
- Transform the tree to dependency graph
- Transform the graph to hoisted tree
- Hoisted tree to node modules array
import { getNodeModules } from 'node-module-collector'
const result = await getNodeModules(rootDir)
result is node modules array, like:
[
{
"name": "foo",
"version": "1.0.0",
"dir": "/path/fixtures/yarn-workspace-demo/node_modules/foo",
"dependencies": [
{
"name": "ms",
"version": "2.0.0",
"dir": "/path/fixtures/yarn-workspace-demo/node_modules/ms"
}
]
},
{
"name": "ms",
"version": "2.1.1",
"dir": "/path/fixtures/yarn-workspace-demo/packages/test-app/node_modules/ms"
}
]
- npm
- pnpm
- pnpm with hosited
- yarn1
- yarn berry(with node-modules)