18 个不稳定版本 (3 个重大变更)
0.4.0 | 2024 年 6 月 17 日 |
---|---|
0.3.0 | 2024 年 5 月 19 日 |
0.2.2 | 2024 年 1 月 14 日 |
0.2.1 | 2023 年 11 月 21 日 |
0.0.0 |
|
#122 in 构建工具
73 每月下载次数
在 cargo-playdate 中使用
210KB
5K SLoC
Playdate 包构建工具
包含清单格式和“通过元数据构建资产”的实用工具。
元数据
以下是示例中的元数据格式说明
包信息
以下字段用于生成包清单
# Playdate Package Info
# official doc: https://sdk.play.date/#pdxinfo
[package.metadata.playdate]
bundle-id = "com.yourcompany.game"
name = "My Game" # default is package.name
author = "Alex" # default is package.authors
version = "0.0" # default is package.version
description = "short about" # default is package.description
image-path = "img/system"
launch-sound-path = "sfx/jump"
content-warning = "This game contains mild realistic, violence and bloodshed."
content-warning2 = "Really scary game."
build-number = 42 # also can be string, e.g "42"
# also extra fields are supported
# acceptable types of values: string, number, boolean
foo = "bar"
注意,仅 bundle-id
是必需的,其他字段是可选的。
特定目标包信息
主 包信息 可以通过 bin
或 example
的特殊 表格 来覆盖。所有清单字段都是可接受的,但可选。
支持两种格式。第一种类似于 cargo 的目标
[[package.metadata.playdate.example]]
target = "existing-example-name" # pointing to cargo-target name
# next is same as for main manifest fields, all are optional:
bundle-id = "com.yourcompany.game.example"
name = "My Example"
第二种是表格
[package.metadata.playdate.example.existing-example-name]
bundle-id = "com.yourcompany.game.example"
content-warning = "Scary experimental stuff."
重要:你应在同一文档中不要混合这两种格式。
资产
Playdate 包构建系统(如 cargo-playdate)的说明。
描述资产的存储位置,以及它们在包中应该如何存在。
[package.metadata.playdate.assets]
开发资产
仅用于示例或测试的资产,继承自主要资产。
[package.metadata.playdate.dev-assets]
开发资产的工作方式与主要资产相同,以下进一步说明 assets
指的是 assets
和 dev-assets
。
设置资产有两种选项 - 列表或表格
资产列表
声明资产最简单的方法是路径列表。
- 路径可以包含 glob 模式,例如
/**/*o*e.png
- 路径可以包含环境变量,例如
${MY_VARIABLE}
- 路径可以是绝对路径或相对于 crate 根的相对路径
因此,所有匹配的文件都将被包含。
[package.metadata.playdate]
assets = ["assets/**/*.wav", "assets/**/*.png"]
如果路径中包含 glob,则文件的最终路径以匹配的路径部分开始,例如:
- 对于
assets/**/*.wav
,如果assets
包含foo
目录,则它将是foo/some.wav
资产表
这是指定应包含哪些资产的一种复杂方式。
-
左侧是资产应在包中的路径,
-
右侧是应找到源(s)的路径。
-
两侧都可以包含 glob。
-
两侧都可以包含类似于
${MY_VARIABLE}
的环境变量查询。 -
左侧路径相对于构建 playdate-package 根目录是相对的。
-
右侧路径可以是绝对路径或相对于 crate 根目录的相对路径。
[package.metadata.playdate.assets]
# Next line means that all png-files in SystemAssets dir wil be included and placed in img/system directory
"img/system/" = "${PLAYDATE_SDK_PATH}/Examples/Game Template/Source/SystemAssets/*.png"
# Next line means that jump.wav will be included and placed in package as sfx/jump.wav
"sfx/jump.wav" = "${PLAYDATE_SDK_PATH}/Examples/Level 1-1/Source/sfx/jump.wav"
# Next line means that img.png will be included in root of package
"/" = "assets/img.png" # path is relative to crate root
此外,这种方法还支持简单的包含和排除指令。
"rel-to-crate-root/file-to-include" = true # left hand is a local path, relative to crate-root,
"file-to-exclude" = false # OR resulting path that where asset will be in the resulting package.
选项
包构建选项,Playdate 包构建系统(如 cargo-playdate)的指令。
[package.metadata.playdate.options]
workspace = true # use `workspace.metadata.playdate.options` as defaults (default is `false`)
assets.dependencies = true # just set or override corresponding value from `workspace.metadata`
字段 workspace
与 cargo 的功能 从工作区继承依赖项 类似,通过 workspace.metadata.playdate.options
开启结构继承 package.metadata.playdate.options
。
可用的选项是 assets
,请参阅 资产选项。
目前没有更多选项,只是为将来使用而保留。
此配置仅用于主要包。主要包是用户在命令行上选择的包,无论是通过 -p
标志还是根据当前目录和默认工作区成员的默认值。因此,顶级包的 options
应用于整个依赖项树,忽略依赖项的 options
。因此,只有最终用户才能控制资产的收集和构建方式。
注意:这取决于实现,上面的示例是如何在参考实现 cargo-playdate
中工作的。
资产选项
这是收集您包中的资产的方式。
[package.metadata.playdate.options.assets]
dependencies = true # allow to build assets for dependencies (default is `false`)
overwrite = true # overwrite existing assets in build dir (default is `true`, alias: `override`)
method = "link" # "copy" or "link" (default is `link`) - how assets should be collected, make symlinks or copy files
follow-symlinks = true # follow symlinks (default is `true`)
字段 overwrite
还允许更高版本的依赖项覆盖更深依赖项的资产。
此软件不受 Panic 的赞助或支持。
依赖项
~5–17MB
~174K SLoC