Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var CommandSet = &cli.Command{ Name: "npm", Aliases: []string{"n"}, Usage: "npm 包管理工具", Subcommands: []*cli.Command{ PinPackageCmd, }, }
View Source
var PinPackageCmd = command.NewCommand("pin", "根据 pnpm-lock.yaml 锁定 package.json 依赖版本", any(nil), command.WithAlias([]string{"p"}), ).AddHandler( command.InlineHandler[any]( func(c *cli.Context, config any) error { cwd, err := os.Getwd() if err != nil { return fmt.Errorf("get cwd: %w", err) } lockFilePath := path.Join(cwd, "pnpm-lock.yaml") if !fileutil.Exists(lockFilePath) { return fmt.Errorf("pnpm-lock.yaml not found") } lockFile, err := os.ReadFile(lockFilePath) if err != nil { return fmt.Errorf("read pnpm-lock.yaml: %w", err) } var lockFileSchema PnpmLockYamlSchema if err := yaml.Unmarshal(lockFile, &lockFileSchema); err != nil { return fmt.Errorf("unmarshal pnpm-lock.yaml: %w", err) } packageJsonFilePath := path.Join(cwd, "package.json") if !fileutil.Exists(packageJsonFilePath) { return fmt.Errorf("package.json not found") } packageJsonFile, err := os.ReadFile(packageJsonFilePath) if err != nil { return fmt.Errorf("read package.json: %w", err) } var packageJsonSchema PackageJsonSchema if err := json.Unmarshal(packageJsonFile, &packageJsonSchema); err != nil { return fmt.Errorf("unmarshal package.json: %w", err) } installedPackages := lockFileSchema.Importers["."].Dependencies for k := range packageJsonSchema.Dependencies { packageJsonSchema.Dependencies[k] = formatInstalledVersion(installedPackages[k].Version) } installedDevPackages := lockFileSchema.Importers["."].DevDependencies for k := range packageJsonSchema.DevDependencies { packageJsonSchema.DevDependencies[k] = formatInstalledVersion(installedDevPackages[k].Version) } packageJsonFile, err = json.MarshalIndent(packageJsonSchema, "", " ") if err != nil { return fmt.Errorf("marshal package.json: %w", err) } if err := os.WriteFile(packageJsonFilePath, packageJsonFile, fs.ModePerm); err != nil { return fmt.Errorf("write package.json: %w", err) } log.Info().Str("file", packageJsonFilePath).Msg("更新 package.json") return nil }, ), ).Create()
Functions ¶
This section is empty.
Types ¶
type PackageJsonSchema ¶
type PackageJsonSchema struct {
Name string `json:"name"`
Version string `json:"version"`
Private bool `json:"private"`
Type string `json:"type"`
Dependencies map[string]string `json:"dependencies"`
DevDependencies map[string]string `json:"devDependencies"`
Scripts map[string]string `json:"scripts"`
}
type PnpmLockYamlSchema ¶
type PnpmLockYamlSchema struct {
LockFileVersion string `yaml:"lockfileVersion"`
Settings struct {
AutoInstallPeers bool `yaml:"autoInstallPeers"`
ExcludeLinksFromLockFile bool `yaml:"excludeLinksFromLockFile"`
}
Importers map[string]struct {
Dependencies map[string]struct {
Specifier string `yaml:"specifier"`
Version string `yaml:"version"`
} `yaml:"dependencies"`
DevDependencies map[string]struct {
Specifier string `yaml:"specifier"`
Version string `yaml:"version"`
} `yaml:"devDependencies"`
}
}
Click to show internal directories.
Click to hide internal directories.