Documentation
¶
Overview ¶
Package javascript provides dependency resolution for npm packages.
Overview ¶
This package implements deps.Language for JavaScript/Node.js, supporting:
- npm registry resolution via npm client
- package.json manifest parsing
Registry Resolution ¶
Use [Language.Resolver] to fetch dependencies from npm:
resolver, _ := javascript.Language.Resolver()
g, _ := resolver.Resolve(ctx, "express", deps.Options{MaxDepth: 10})
The resolver fetches the "dependencies" field from each package, excluding devDependencies, peerDependencies, and optionalDependencies.
Manifest Parsing ¶
Parse package.json files:
parser, _ := javascript.Language.Manifest("npm", nil)
result, _ := parser.Parse("package.json", deps.Options{})
Note: package.json contains direct dependencies only. The resolver fetches transitive dependencies from npm.
npm: github.com/stacktower-io/stacktower/pkg/integrations/npm deps.Language: github.com/stacktower-io/stacktower/pkg/core/deps.Language
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Language = &deps.Language{ Name: "javascript", DefaultRegistry: "npm", DefaultRuntimeVersion: "20", ManifestTypes: []string{"package", "package-lock"}, ManifestAliases: map[string]string{ "package.json": "package", "package-lock.json": "package-lock", }, NewResolver: newResolver, NewManifest: newManifest, ManifestParsers: manifestParsers, NormalizeName: func(name string) string { return strings.ToLower(strings.TrimSpace(name)) }, }
Language provides JavaScript/TypeScript dependency resolution via npm. Supports package.json and package-lock.json manifest files.
Functions ¶
This section is empty.
Types ¶
type PackageJSON ¶
type PackageJSON struct {
// contains filtered or unexported fields
}
PackageJSON parses package.json files. It extracts dependencies, devDependencies, and peerDependencies.
func (*PackageJSON) IncludesTransitive ¶
func (p *PackageJSON) IncludesTransitive() bool
func (*PackageJSON) Parse ¶
func (p *PackageJSON) Parse(path string, opts deps.Options) (*deps.ManifestResult, error)
func (*PackageJSON) Supports ¶
func (p *PackageJSON) Supports(name string) bool
func (*PackageJSON) Type ¶
func (p *PackageJSON) Type() string
type PackageLock ¶
type PackageLock struct{}
PackageLock parses package-lock.json files. It provides a full transitive closure of the dependency graph without needing to contact a registry. Supports lockfileVersion 2 and 3 formats.
func (*PackageLock) IncludesTransitive ¶
func (p *PackageLock) IncludesTransitive() bool
func (*PackageLock) Parse ¶
func (p *PackageLock) Parse(path string, opts deps.Options) (*deps.ManifestResult, error)
func (*PackageLock) Supports ¶
func (p *PackageLock) Supports(name string) bool
func (*PackageLock) Type ¶
func (p *PackageLock) Type() string
type SemverMatcher ¶
type SemverMatcher struct{}
SemverMatcher implements constraint matching for npm's semver specifiers. It supports common operators: =, !=, <, <=, >, >=, ^, ~, x-range, hyphen range
func (SemverMatcher) ParseConstraint ¶
func (SemverMatcher) ParseConstraint(constraint string) pubgrub.Condition
ParseConstraint converts an npm semver constraint to a PubGrub Condition. Supports: ^, ~, >=, <=, >, <, =, !=, x-ranges, hyphen ranges, and || (or)
func (SemverMatcher) ParseVersion ¶
func (SemverMatcher) ParseVersion(version string) pubgrub.Version
ParseVersion converts a semver string to a PubGrub SemanticVersion.