A tool create a detailed CSV analyzing your project's dependencies
Project description
depster
Overview
This Python package converts a package-lock.json file into a CSV file containing detailed information about project dependencies, including their versions, integrity, and metadata. It also fetches the latest versions of the packages from the NPM registry.
Features
- Parse JSON: Reads and processes
package-lock.jsoninto a structured DataFrame using Pandas. - Extract Key Information: Captures current version, integrity hash, requirements, and nested dependencies.
- Check Dependencies: Identifies if a package has dependencies.
- Fetch Latest Versions: Uses the NPM registry API to get the most recent version of each package.
- Export to CSV: Outputs the cleaned and enriched data to
dependencies.csv.
Prerequisites
Before running the script, ensure you have:
- Python 3.x installed.
- Required libraries:
pip install pandas requests
How It Works
1. Load the JSON File
The script reads the package-lock.json file and parses it into a Pandas DataFrame for easy manipulation.
2. Clean and Prepare Data
- Renames columns for better readability:
name→Projectversion→Current Versiondependencies→dict
- Adds new columns to store additional information:
Latest VersionIntegrityRequiresDependencieshasDependencies(boolean flag indicating whether a dependency has its own dependencies)
3. Process Dependency Information
Extracts and processes data from the dependencies dictionary:
- Current Version: Retrieves the version of each package.
- Integrity Hash: Captures the package's integrity value if available.
- Nested Dependencies: Lists any nested dependencies along with their versions.
- Required Versions: Lists required versions of dependencies.
4. Query NPM Registry
For each package, the script queries the NPM registry API (https://registry.npmjs.org/:package) to fetch the latest available version and populates the Latest Version column.
5. Export to CSV
The final DataFrame is saved as a CSV file named package-lock.csv.
Usage
- Run the script:
depster path/to/package-lock.json
Output
Generated File
The output file, dependencies.csv, will be created in the same directory as the script.
Example Output
The resulting CSV file will include the following columns:
| Packages | Project | Current Version | Latest Version | Integrity | Requires | Dependencies | hasDependencies |
|---|---|---|---|---|---|---|---|
| 1 | Example1 | 1.0.0 | 1.2.0 | abc123... | dep1: ^1.0.0, dep2: | dep3: 1.1.0, dep4: | True |
Notes
Performance Considerations
- The script sends a separate request to the NPM registry for each package. This can slow down processing for projects with a large number of dependencies.
Warning Suppression
- Warnings are suppressed in the script for a cleaner execution log.
Limitations
- The script assumes a specific structure for the
package-lock.jsonfile. - An active internet connection is required to fetch the latest package versions.
License
This project is open-source and available under the MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file depster-1.1.0.tar.gz.
File metadata
- Download URL: depster-1.1.0.tar.gz
- Upload date:
- Size: 34.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5687c80d7c4076026a6474e136281d97ce37be1bc746611264f5a5d8c9104618
|
|
| MD5 |
0916f029d447f6706e340604c921f3d8
|
|
| BLAKE2b-256 |
10dd0a74a834fa5133467a16ab5e1f873e507f3881ae5a1cd44a298eaec8ef0d
|
File details
Details for the file depster-1.1.0-py3-none-any.whl.
File metadata
- Download URL: depster-1.1.0-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d24dddd981be407c1648fac7d9758a15ee3569facda739e491b086830e75f2d3
|
|
| MD5 |
1369c8dd017c1eef8991d844c01e8ec9
|
|
| BLAKE2b-256 |
c76fd40336a2c5c7a95de352202b05079fe730866dbb04b097b1ddbc20c33029
|