STRUCT
Project 
Contents
- Properties
nameorganizationNameclassPrefixoptionspackagestargetsschemessettingsfileHeaderTemplateadditionalFilesresourceSynthesizerscontainsExternalDependencies
 - Methods
init(name:organizationName:classPrefix:options:packages:settings:targets:schemes:fileHeaderTemplate:additionalFiles:resourceSynthesizers:)
 
public struct Project: Codable, Equatable, SendableA project representation.
A project manifest needs to be defined in a Project.swift manifest file. Manifests need to import the framework ProjectDescription which contains all the classes and enums that are available for you to describe your projects.
The snippet below shows an example project manifest:
import ProjectDescription
let project = Project(
    name: "MyProject",
    organizationName: "MyOrg",
    targets: [
        .target(
            name: "App",
            destinations: .iOS,
            product: .app,
            bundleId: "dev.tuist.App",
            infoPlist: "Config/App-Info.plist",
            sources: ["Sources/**"],
            resources: [
                "Resources/**",
                .folderReference(path: "Stubs"),
                .folderReference(path: "ODR", tags: ["odr_tag"])
            ],
            headers: .headers(
                public: ["Sources/public/A/**", "Sources/public/B/**"],
                private: "Sources/private/**",
                project: ["Sources/project/A/**", "Sources/project/B/**"]
            ),
            dependencies: [
                .project(target: "Framework1", path: "../Framework1"),
                .project(target: "Framework2", path: "../Framework2")
            ]
        )
    ],
    schemes: [
        Scheme(
            name: "App-Debug",
            shared: true,
            buildAction: .buildAction(targets: ["App"]),
            testAction: .targets(["AppTests"]),
            runAction: .runAction(executable: "App")
        ),
        Scheme(
            name: "App-Release",
            shared: true,
            buildAction: .buildAction(targets: ["App"]),
            runAction: .runAction(executable: "App")
        )
    ],
    additionalFiles: [
        "Dangerfile.swift",
        "Documentation/**",
        .folderReference(path: "Website")
    ]
)Properties 
name 
public let name: StringThe name of the project. Also, the file name of the generated Xcode project.
organizationName 
public let organizationName: String?The name of the organization used by Xcode as copyright.
classPrefix 
public let classPrefix: String?The prefix for class files Xcode generates when you create a project or class file.
options 
public let options: OptionsThe project options.
packages 
public let packages: [Package]The Swift Packages used by the project.
targets 
public let targets: [Target]The targets of the project.
schemes 
public let schemes: [Scheme]The custom schemes for the project. Default schemes for each target are generated by default.
settings 
public let settings: Settings?The build settings and configuration for the project.
fileHeaderTemplate 
public let fileHeaderTemplate: FileHeaderTemplate?The custom file header template for Xcode built-in file templates.
additionalFiles 
public let additionalFiles: [FileElement]The additional files for the project. For target's additional files, see Target/additionalFiles.
resourceSynthesizers 
public let resourceSynthesizers: [ResourceSynthesizer]The resource synthesizers for the project to generate accessors for resources.
containsExternalDependencies 
public var containsExternalDependencies: BoolThe project contains targets that depend on external dependencies
Methods 
init(name:organizationName:classPrefix:options:packages:settings:targets:schemes:fileHeaderTemplate:additionalFiles:resourceSynthesizers:) 
public init(
    name: String,
    organizationName: String? = nil,
    classPrefix: String? = nil,
    options: Options = .options(),
    packages: [Package] = [],
    settings: Settings? = nil,
    targets: [Target] = [],
    schemes: [Scheme] = [],
    fileHeaderTemplate: FileHeaderTemplate? = nil,
    additionalFiles: [FileElement] = [],
    resourceSynthesizers: [ResourceSynthesizer] = .default
)