3

コア モジュールとオプションのボーナス モジュールを含む 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 モジュールをプロジェクト内に作成し、それらすべてを 1 つの大きな Taco モジュールとして世界中にエクスポートすることは可能ですか?

4

1 に答える 1

4

現在、これを行うクリーンな方法はありませんが、合理的な要求のようです。http://bugs.swift.orgで拡張リクエストを提出することをお勧めします。

これを行うことができる「ハッキー」な方法が1つあります。

目的の内部レイアウトでソースを作成します。

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"]
)

Core、Toppings、SideDishes モジュールをプロジェクト内に作成し、それらすべてを 1 つの大きな Taco モジュールとして世界中にエクスポートすることは可能ですか?

いいえ、残念ながら現在これを行う方法はなく、サポートするにはかなりのコンパイラ作業が必要です。

于 2016-08-16T15:40:58.047 に答える