Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pvp

pLang Vendor Packages:pLang 的第三方包管理器

安装

需要 Node.js 环境。

npm i -g --allow-scripts=@peyt/pvp @peyt/pvp

安装脚本自动确保 pvp 可执行(纯 C++ 单文件,无 LLVM 等外部依赖)。验证:

pvp path      # 打印包根目录
pvp help

安装位置

平台 路径
macOS ~/Library/Application Support/pLang/0.x/packages/
Linux ~/.local/share/pLang/0.x/packages/$XDG_DATA_HOME 优先)
Windows %LOCALAPPDATA%\pLang\0.x\packages\

0.x 为 pLang 语言版本目录(1.0 后改 1.x);PLANG_PVP 环境变量可覆盖。

包清单

第三方包根目录放一个 pLangLists.json,声明元数据:

{
  "name": "strutil",
  "version": "1.2.0",
  "author": "alice",
  "repo": "github.com/user/repo",
  "alias": "repo"
}
字段 说明
name 包名
version 版本
author 作者
repo 仓库完整地址(安装身份,pvp 按此装到 github.com/user/repo/
alias 别名(import/调用用)

.plang 文件里用别名声明包:

package repo;   // 别名
pub func shout(var -> var: char s) -> var: ptr { ... }

推送到 GitHub 即完成发布——完整地址就是来源

安装

pvp install github.com/user/repo            # 装到 <包根>/github.com/user/repo/
pvp install https://github.com/user/repo.git

禁止用别名安装(别名只能用于 import)

pvp 安装时读清单的 repo 定位,把包装到对应路径,并维护 installed.json(别名 → 仓库地址):

{ "repo": "github.com/user/repo" }

调试用来源也支持:本地目录 pvp install ./mylib、tar.gz pvp install foo.tar.gz(此时身份取清单 repo 字段,没有则取别名)。

import 用别名

import repo;                     // 别名(pvp 装的时候登记的)
import std.io;

func main() : int {
    io.println(repo.shout("hi"));
    return 0;
}

编译器解析 import <别名> 时查 <包根>/installed.json,找到对应仓库地址再解析。直接写完整地址 import github.com/user/repo; 也能解析。

命令

pvp install <完整地址|git-url|本地目录|.tar.gz>   安装(身份 = 清单 repo)
pvp update <别名>                按记录来源重装
pvp remove <别名>                卸载(清理 installed.json)
pvp list                         列出已装包(别名 + 地址 + 版本)
pvp info <别名>                  查看元数据
pvp check                        校验已装包
pvp export <别名> [输出.tar.gz]  打包为 tar.gz 分发
pvp path                         打印包根目录
pvp help                         帮助

与项目联动

pvp install 自动把别名写入项目 pLangLists.json"dependencies"

{
  "name": "demo",
  "dependencies": ["repo"]
}

plc build 不会自动拉依赖;缺包时编译报错,手动 pvp install 即可。

元数据

每个已装包含 pvp-pkg.json

{
  "name": "github.com/user/repo",
  "alias": "repo",
  "author": "alice",
  "source": "github.com/user/repo",
  "version": "1.2.0"
}

环境变量

变量 作用
PLANG_PVP 覆盖包根目录

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages