将模块名称设置为不同于 SwiftPM 中的目录名称
Setting module name to be different from directory name in SwiftPM
我有一个 Swift 库,其中包含一个核心模块和可选的奖励模块。我想使用以下目录布局,映射到导出的 Swift 包名称,如图所示:
Taco/
Source/
Core/ → import Taco
Toppings/ → import TacoToppings
SideDishes/ → import TacoSideDishes
在我看来,这是一个看起来很合理的项目布局。但是,如果我没有正确阅读文档,这将用无用的名称(如“Core”)污染全局模块命名空间。似乎 SwiftPM 只会导出名称与目录名称相同的模块,因此我必须这样做:
Taco/
Source/
Taco/
TacoToppings/
TacoSideDishes/
有没有办法配置 Package.swift
使用上面更整洁的目录布局并仍然导出所需的模块名称?
或者,是否可以在项目内部制作 Core、Toppings 和 SideDishes 模块,并将它们作为一个大 Taco 模块全部导出到世界?
目前还没有一个干净的方法来做到这一点,但这似乎是一个合理的要求。我建议在 http://bugs.swift.org 提交增强请求。
有一种"hacky"方法可以做到这一点:
在所需的内部布局中创建您的来源:
Sources/Core
Sources/Toppings
为所需的模块名称添加额外的符号链接:
ln -s Core Sources/Taco
ln -s Toppings Sources/TacoToppings
向清单添加 exclude
指令以忽略不需要的模块名称:
let package = Package(
name: "Taco",
exclude: ["Sources/Core", "Sources/Toppings"]
)
is it possible to make the Core, Toppings, and SideDishes modules internal to the project, and export them all to the world as one big Taco module?
不,不幸的是目前没有办法做到这一点,它需要大量的编译器工作才能支持。
我有一个 Swift 库,其中包含一个核心模块和可选的奖励模块。我想使用以下目录布局,映射到导出的 Swift 包名称,如图所示:
Taco/
Source/
Core/ → import Taco
Toppings/ → import TacoToppings
SideDishes/ → import TacoSideDishes
在我看来,这是一个看起来很合理的项目布局。但是,如果我没有正确阅读文档,这将用无用的名称(如“Core”)污染全局模块命名空间。似乎 SwiftPM 只会导出名称与目录名称相同的模块,因此我必须这样做:
Taco/
Source/
Taco/
TacoToppings/
TacoSideDishes/
有没有办法配置 Package.swift
使用上面更整洁的目录布局并仍然导出所需的模块名称?
或者,是否可以在项目内部制作 Core、Toppings 和 SideDishes 模块,并将它们作为一个大 Taco 模块全部导出到世界?
目前还没有一个干净的方法来做到这一点,但这似乎是一个合理的要求。我建议在 http://bugs.swift.org 提交增强请求。
有一种"hacky"方法可以做到这一点:
在所需的内部布局中创建您的来源:
Sources/Core
Sources/Toppings
为所需的模块名称添加额外的符号链接:
ln -s Core Sources/Taco
ln -s Toppings Sources/TacoToppings
向清单添加 exclude
指令以忽略不需要的模块名称:
let package = Package(
name: "Taco",
exclude: ["Sources/Core", "Sources/Toppings"]
)
is it possible to make the Core, Toppings, and SideDishes modules internal to the project, and export them all to the world as one big Taco module?
不,不幸的是目前没有办法做到这一点,它需要大量的编译器工作才能支持。