|
1 | 1 | # 包开发 |
2 | 2 | ## 流程 |
3 | | -通常来说,包的全部数据应该是一个 [git](../../meta/tools/git.md) 仓库,置于 github(或其它保证长期稳定的服务器)中,建议添加一份[许可证](../../knowledge/licenseknowledge.md)。每次更新时应在本地操作再推送到远程仓库并注册更新(若需要) |
| 3 | +通常来说,包的全部数据应该是一个 [git](../meta/tools/git.md) 仓库,置于 github(或其它保证长期稳定的服务器)中,建议添加一份[许可证](../knowledge/licenseknowledge.md)。每次更新时应在本地操作再推送到远程仓库并注册更新(若需要) |
4 | 4 |
|
5 | 5 | ## 结构生成 |
6 | 6 | 设置好路径后,可以在包管理器模式下使用 `generate foo` 生成基本框架。 |
7 | 7 |
|
8 | 8 | 在[相对路径](../advanced/filesystem.md#路径) `./foo` 处生成一个目录,包含包的基本结构: |
9 | | -- `src/foo.jl`,包含一个[模块](../../advanced/module.md)的基本结构 |
| 9 | +- `src/foo.jl`,包含一个[模块](../advanced/module.md)的基本结构 |
10 | 10 | - `Project.toml`,包含相关注册信息 |
11 | 11 |
|
12 | 12 | 也可以参照: |
13 | 13 | - [官方提供的包示例](https://github.com/JuliaLang/Example.jl) |
14 | 14 | - [包模板生成器](https://invenia.github.io/PkgTemplates.jl/stable/) |
15 | 15 |
|
16 | 16 | ## Project.toml |
17 | | -`Project.toml` 使用 [TOML 格式](../../knowledge/toml.md),数据中必须含有以下内容 |
| 17 | +`Project.toml` 使用 [TOML 格式](../knowledge/toml.md),数据中必须含有以下内容 |
18 | 18 | - `name` 表示包名,应与模块名一致 |
19 | | -- `uuid` 一个独一无二的 UUID,可以使用 [UUIDs](../../packages/uuids.md) 生成 |
20 | | -- `version` 当前[版本](../../advanced/versionnumber.md) |
| 19 | +- `uuid` 一个独一无二的 UUID,可以使用 [UUIDs](../packages/uuids.md) 生成 |
| 20 | +- `version` 当前[版本](../advanced/versionnumber.md) |
21 | 21 | - `[deps]` 一个字典,包含 `基于的包名 = "它的UUID"`,后者可以通过查找对应仓库中填写的 `uuid` 项或其它调用了它的包中的 `[deps]` 项获取 |
22 | 22 | - `[compat]` 一个字典,包含 `包名 = "支持的版本"`,特别地,`julia` 项表示支持的 Julia 版本 |
23 | 23 | - [`extras` 与 `target` 的用途](https://discourse.juliacn.com/t/topic/6341/2) |
@@ -45,7 +45,7 @@ PNGFiles = "0.3" |
45 | 45 | 若 `build` 失败,提示信息会在终端显示 |
46 | 46 |
|
47 | 47 | ## test |
48 | | -该功能不是必要的;可参考 [Test 的使用](../../packages/test.md) |
| 48 | +该功能不是必要的;可参考 [Test 的使用](../packages/test.md) |
49 | 49 |
|
50 | 50 | ## 手动测试 |
51 | 51 | `add` 命令允许参数是一个本地路径,从而在本地安装包,以模拟包环境。 |
@@ -85,7 +85,7 @@ Base.Math |
85 | 85 | Julia 1.3 以后,`Artifacts` 可以用于将数据块与包捆绑在一起,甚至允许按需下载它们。优先选择 `Artifacts`,而不是试图通过路径,因为这是不可重定位的:一旦你的包被预编译,`@__DIR__` 的结果将被嵌入到预编译的包数据中,如果你试图分发这个包,它将试图在错误的位置加载文件 |
86 | 86 |
|
87 | 87 | ### Scratch |
88 | | -Julia 1.5 以后,[Scratch](../../packages/scratch.md)提供了*临时空间*的概念,即包的可变数据容器。Scratch空间是为完全由包管理的数据缓存设计的,应该在包本身卸载时删除。对于重要的用户生成的数据,包应该继续写入到一个用户指定的路径,该路径不是由 `Julia` 或 `Pkg` 管理的 |
| 88 | +Julia 1.5 以后,[Scratch](../packages/scratch.md)提供了*临时空间*的概念,即包的可变数据容器。Scratch空间是为完全由包管理的数据缓存设计的,应该在包本身卸载时删除。对于重要的用户生成的数据,包应该继续写入到一个用户指定的路径,该路径不是由 `Julia` 或 `Pkg` 管理的 |
89 | 89 |
|
90 | 90 | ### Preferences |
91 | 91 | Julia 1.6 以后,`Preferences` 允许包读写首选项到顶级的 `Project.toml`。这些首选项可以在运行时或编译时读取,以启用或禁用包行为的不同方面(以前,包会将文件写入到它们自己的包目录中以记录由用户或环境设置的选项,但现在不鼓励该行为) |
|
0 commit comments