package-lock-parsing · git:20260424.d50cf5a · 2026-04-24 · sha256 b0e42430c571d3e7
package-lock-parsing git:20260424.d50cf5aA
Immutable. This exact content never changes and is served at /api/v1/blob/b0e42430c571d3e7.
---
name: package-lock-parsing
description: Parse and extract package information from npm package-lock.json files to identify dependencies and their installed versions.
---
# Package-lock.json Parsing
## Overview
The `package-lock.json` file is an npm lock file that records exact dependency versions used in a project. It enables reproducible installs and is essential for vulnerability scanning.
## File Structure
The package-lock.json follows this structure:
```json
{
"name": "project-name",
"version": "1.0.0",
"lockfileVersion": 3,
"packages": {
"": {
"name": "project-name",
"version": "1.0.0",
"dependencies": {
"express": "^4.18.0"
}
},
"node_modules/express": {
"version": "4.18.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz"
}
}
}
```
## Key Properties
- **packages**: Contains all packages (root + node_modules)
- **version**: The installed version of each package
- **dependencies**: Direct dependencies of a package
## Extraction Pattern
```python
import json
def parse_package_lock(file_path):
with open(file_path, 'r') as f:
lock_data = json.load(f)
packages = {}
for pkg_path, pkg_info in lock_data.get('packages', {}).items():
# Skip root package
if pkg_path == '':
continue
pkg_name = pkg_path.split('/')[-1]
version = pkg_info.get('version')
packages[pkg_name] = version
return packages
```
## Usage
Use this skill when:
- Extracting dependency lists from package-lock.json
- Building vulnerability scanning pipelines
- Analyzing dependency versions for compliance
- Creating inventory reports of installed packages
## Related Skills
- `trivy-vulnerability-scanning`: Use parsed packages as input to vulnerability scanner
- `security-audit-csv-reporting`: Output results in structured CSV format