Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/beyondkmp/nodemodulecollector

This is a simple tool to collect all production node modules used in a project
https://github.com/beyondkmp/nodemodulecollector

asar electron-builder npm pnpm yarn

Last synced: 20 days ago
JSON representation

This is a simple tool to collect all production node modules used in a project

Awesome Lists containing this project

README

        

# node-module-collector

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.

## Design

1. Get node modules tree from "npm list"(npm & yarn) or "pnpm list"
2. Transform the tree to dependency graph
3. Transform the graph to hoisted tree
4. Hoisted tree to node modules array

## Usage

```shell
import { getNodeModules } from 'node-module-collector'
const result = await getNodeModules(rootDir)
```

result is node modules array, like:

```json
[
{
"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"
}
]
```

## Support

- [x] npm
- [x] pnpm
- [x] pnpm with hosited
- [x] yarn1
- [x] yarn berry(with node-modules)