Skip to content

번역 🌍

이 페이지를 번역하거나 기존 번역을 개선할 수 있습니다.

기여

Bazel 프로젝트 전환

Bazel는 구글이 2015에 오픈 소스화 한 빌드 시스템 인데, 어떤 규모의 소프트웨어도 빠르고 신뢰성 있게 만들고 테스트할 수 있게 하는 강력한 도구 입니다. Spotify, TinderLyft 같은 몇몇 큰 회사들이 사용하지만 도입과 유지 보수를 하려면 학습과 지속적인 투자를 필요로 합니다. 여러 분야를 다루는 몇몇 회사에는 맞지만, 제품 개발에 집중하는 다른 회사들에는 맞지 않을 수도 있습니다. 예를 들어, 우리가 본 iOS 플랫폼 팀을 소유한 회사들은 Bazel을 도입한 후 기술자들을 떠나게 만들었습니다. Apple이 Xcode와 빌드 시스템 간에 강력한 결합을 고수하는 것은 Bazel 프로젝트를 유지 보수하기 어렵게 만드는 또 다른 요인 입니다.

TUIST의 특별함은 세련미에 있습니다

Tuist는 Xcode와 Xcode 프로젝트에 대항하는 대신, 그것을 받아들입니다. 동일한 개념들(예, target, scheme, build settings), 친숙한 언어 (예, Swift) 그리고 간결함과 iOS 플랫폼 팀들 뿐만 아니라 프로젝트를 유지 보수하고 확장하는 모든 직업들이 즐길 수 있는 경험 등을.

규칙

Bazel은 어떻게 소프트웨어를 만들고 테스트 할 지에 대한 규칙을 사용합니다. 이 규칙들은 Python 같은 언어 인 Starlark 로 작업됩니다Tuist 는 Swift를 환경 설정 언어로 사용해서 개발자들에게 Xcode의 자동 완성, Type 확인, 유효성 검사 등의 편의성을 제공합니다. 예를 들어, 아래 규칙은 Bazel에서 어떻게 Swift 라이브러리를 생성 할 지를 설명합니다:

txt
swift_library(
    name = "MyLibrary.library",
    srcs = glob(["**/*.swift"]),
    module_name = "MyLibrary"
)
swift
let project = Project(
    // ...
    targets: [
        .target(name: "MyLibrary", product: .staticLibrary, sources: ["**/*.swift"])
    ]
)

Here's another example but comparing how to define unit tests in Bazel and Tuist:

txt
ios_unit_test(
    name = "MyLibraryTests",
    bundle_id = "dev.tuist.MyLibraryTests",
    minimum_os_version = "16.0",
    test_host = "//MyApp:MyLibrary",
    deps = [":MyLibraryTests.library"],
)
swift
let project = Project(
    // ...
    targets: [
        .target(
            name: "MyLibraryTests",
            destinations: .iOS,
            product: .unitTests,
            bundleId: "dev.tuist.MyLibraryTests",
            sources: "Tests/MyLibraryTests/**",
            dependencies: [
                .target(name: "MyLibrary"),
            ]
        )
    ]
)

Swift Package Manager 의존성

Bazel에서, 여러분은 Swift Package들을 의존성으로 사용하게 위해 rules_swift_package_managerGazelle 플러그인을 사용할 수 있습니다. 이 플러그인은 의존성의 출처로 Package.swift 를 요구 합니다. Tuist의 인터페이스도 Bazel과 유사하게 의존성 패키지들을 가져오기 위해 tuist install 명령을 사용할 수 있습니다. 가져 온 후에, 여러분은 프로젝트를 tuist generate 명령으로 행성 할 수 있습니다.

bash
tuist install # Fetch dependencies defined in Tuist/Package.swift
tuist generate # Generate an Xcode project

프로젝트 생성

커뮤니티는 Xcode 프로젝트들을 Bazel로 선언된 프로젝트들로 만들기 위해 몇 가지 규칙 묶음인 rules_xcodeproj을 제공합니다. BUILD 을 설정해야 하는 Bazel과는 달리, Tuist는 어떤 환경 설정도 전혀 필요하지 않습니다. 여러분은 최상위 경로에서 tuist generate 를 실행 할 수 있고, Tuist는 Xcode 프로젝트를 만들어 줄 것 입니다.

Released under the MIT License.