package.json completeness checks — the Node pendant of checks.pyproject.
Ports the intent of the pyproject gold-standard checks to Node: a project must
ship a parsable package.json declaring the metadata fields a published
package needs. Category key is node (the module name), matching the
category.fn_name canonical-naming convention used by the Python checks.
check_package_json_exists(project)
Check: package.json exists and is parsable JSON.
Source code in packages/axm-init/src/axm_init/checks/node/package_json.py
| Python |
|---|
| def check_package_json_exists(project: Path) -> CheckResult:
"""Check: ``package.json`` exists and is parsable JSON."""
path = project / "package.json"
if not path.is_file():
return CheckResult(
name="package_json.package_json_exists",
category="package_json",
passed=False,
weight=4,
message="package.json not found",
details=[],
fix="Create a package.json at the project root (npm init).",
)
if _load_package_json(project) is None:
return CheckResult(
name="package_json.package_json_exists",
category="package_json",
passed=False,
weight=4,
message="package.json is unparsable",
details=["File exists but contains invalid JSON"],
fix="Fix the JSON syntax errors in package.json.",
)
return CheckResult(
name="node.package_json_exists",
category="package_json",
passed=True,
weight=4,
message="package.json found",
details=[],
fix="",
)
|
Check: package.json declares the required publication metadata fields.
Source code in packages/axm-init/src/axm_init/checks/node/package_json.py
| Python |
|---|
| def check_package_json_metadata(project: Path) -> CheckResult:
"""Check: ``package.json`` declares the required publication metadata fields."""
data = _load_package_json(project)
if data is None:
return CheckResult(
name="package_json.package_json_metadata",
category="package_json",
passed=False,
weight=3,
message="package.json missing or unparsable",
details=[],
fix="Create a valid package.json before checking metadata.",
)
missing = [f for f in _REQUIRED_FIELDS if f not in data]
if missing:
return CheckResult(
name="package_json.package_json_metadata",
category="package_json",
passed=False,
weight=3,
message=f"Missing {len(missing)} field(s) in package.json",
details=[f"Missing: {', '.join(missing)}"],
fix=f"Add {', '.join(missing)} to package.json.",
)
return CheckResult(
name="node.package_json_metadata",
category="package_json",
passed=True,
weight=3,
message="All required metadata fields present",
details=[],
fix="",
)
|