跳到主要内容

命令行工具

Alia 的命令行工具 alia(CmdAlia)集成了项目管理、依赖安装与 Mods Space 发布功能。

项目管理​

命令说明
alia build编译项目到 build/<lang>/;若 @compileConfig 声明了 build Alias,则编译后解释执行之。目标语言优先级:CLI --lang:<value> > config.json 的 compiler.lang > 默认 js(两者均未声明时打印提示)。构建保留既有产物与缓存,仅覆盖编译输出
alia run编译并运行项目,目标语言解析规则同 build。若 @compileConfig 声明了 run Alias,则解释执行之;否则 js/nodejs 用 node,rs 用 cargo run
alia clean清理构建产物与缓存:默认删除整个 build/;alia clean --lang:<value> 仅删除对应语言目录
alia create <name>在 ./<name>/ 创建标准 Alia 项目骨架
alia init [name]在当前目录初始化标准 Alia 项目骨架(省略 name 时取目录名)
alia check静态类型检查全部 .alia 文件,存在错误时退出码为 1
alia format格式化全部 .alia 文件
alia start以解释模式执行 main.alia

目标语言未显式声明时的提示示例:

Notice: no target language specified; using the default language 'js'.
Set "compiler": { "lang": "<language>" } in config.json, or pass an explicit target such as --lang:js, to silence this notice.

创建项目​

alia create my-app # 在 ./my-app/ 创建新项目
alia init # 在当前目录初始化,项目名取目录名
alia create my-app --version:'0.2.0' --author:'alice' --description:'demo' --license:'MIT'

支持的基本参数:--version:<value>、--description:<value>、--author:<value>、--license:<value>;--force:true 允许写入非空目录。生成的项目包含 config.json、main.alia、lib.alia、mods/ 与带注释的 .gitignore(忽略 build/ 与 mods/)。

alia run / alia build 支持任意 --key:value 参数。这些参数会按名称注入到 @compileConfig 声明的 run/build Alias 中(outDir 始终自动注入,且不可被同名参数覆盖)。若 Alias 参数声明为可空类型(<Type? param>),则未提供的参数绑定为 null 而非报错。参数名对工具链不是内置的:--target、--filename 等都由各后端自行声明消费哪些名字并在覆写端解析,编译器内核不预置任何参数。

--outDir:<value> 用于直接指定产物目录(默认 <compiler.outDir>/<lang>);该参数由工具链自行消费,不会传入后端的 run/build Alias。

目标专属的行为由后端在 @compileConfig 中以数据声明,管理器只按数据执行:

~ 目标名 -> 能力表:该目标不会安装第三方运行时
targetCaps: *['web': *['noPackageManager': true]],
~ 目标名 -> 产物目录
targetOutDir: *['web': './build/nodejs-web'],
~ 目标名 -> 步骤序列:web 目标自行接管完整生命周期,跳过 build
targetSteps: *['web': ['run']],
run: alias <String outDir> <String? filename> <String? target> -> {
import 'process' as process
let entry = 'main.js'
if Ok filename { if filename != '' { entry = filename } }
process.spawn 'node' with [entry] with *[cwd: outDir, stdio: 'inherit']
}
alia run --target:'web' # 按 targetSteps 只执行 run 步骤,产物落到 targetOutDir
alia run # 未提供 target,步骤序列为默认的 build -> run
alia build --outDir:'dist' # 产物直接写入 ./dist

未提供 --target 时 targetSteps/targetCaps/targetOutDir 均不命中,按默认行为处理。

项目依赖​

命令说明
alia add <package>添加依赖并下载到 mods/<name>@<version>/
alia remove <package>移除依赖
alia update检查并更新全部依赖到最新版本

全局包​

命令说明
alia install <package>全局安装包到 ~/.alia/packages/
alia uninstall <package>卸载全局包

包名可带版本号:alia install foo@1.2.0;省略版本号时自动解析最新版本。

Mods Space​

命令说明
alia space <url>设置 Mods Space 地址(持久化到 ~/.alia/config.json)
alia login登录(存储 token 到 ~/.alia/config.json)
alia logout退出登录
alia publish发布当前项目到 Mods Space

发布前需要 config.json 声明 name 与 version,且已执行 alia login。

下一步​