Building, bundling and CI - leotm/react-native-template-new-architecture GitHub Wiki

History

  • 1970s: Yacc (Yet Another Compiler-Compiler) (Unix) - LALR parser generator
  • 1976: Make (Unix) - Makefiles
  • 1985: Bison (GNU) - general-purpose language parser generator (CFG -> LR/GLR)
  • 1987: Flex (fast lexical analyzer generator) - tokenise input
  • 1995: Ruby - high-lvl general-purpose language
  • 1999: (Apache) Tomccat - Java HTTP server
  • 2000: CMake - generate another system's build files (used w Make/Ninja/AndroidStudio/Xcode/MSVisualStudio/etc)
  • Jul00: (Apache) Ant - Java Make replacement (needs Java plat), XML
  • Oct03: Xcode (Apple) - Mac IDE for i/iPad/watch/tv/visionOS
  • Mar04: RubyGems - Ruby pkg man
  • Jul04: (Apache) Maven - Java + C#/Ruby/Scala (lol)
  • Apr08: Gradle - Groovy/Kotlin DSL (bundles RN w Metro) (top-down)
  • 2009: Node.js - run JS (V8) outside web (Win/Linux/Mac/etc)
  • 2011: (chromium/gyp, Google) - Generate Your Projects (native IDE project files to build Chrome)
  • Sep11: CocoaPods - Obj-C/Swift dep man (inspired by RubyGems) and auto Xcode integ
  • 2012: Ninja (Google) - Make replacement, speed up Chrome, parts of Android, LLVM, other
  • May14: sbt - simple build tool - build Java/Scala/Kotlin projects
  • Mar15: Bazel (Blaze) - Starlark (Python) rules/macros - Java/C/C++/Go/Python/Objective-C/Bourne - Android/iOS - (bottom-up)
  • 2016: GN (Google) - generate Ninja builds (replaced GYP)
  • Feb16: Please - not Maven, pip, or go build - not make - not Bazel, Buck or Pants - no Windows
  • Apr18: Metro (Meta) - RN JS bundler (customise w rnx-kit)
  • Jun18: Pants - Python/Go/Java/Scala/Shell/Docker - inspired by Blaze - JS help needed (contribute after CLI or earlier)
  • Jun20: nodejs/gyp-next - forked GYP for Node.js projects
  • Nov20: ESBuild - extremely fast JS/CSS bundler/minifier
  • Jan21: Buck (Meta) - Java/Android/iOS/Other - inspired by Bazel
  • Mar21: Re.Pack (Haul, Webpack-based) - RN builder
  • May21?: nodejs/node-gyp - build Node.js native addons
  • 🚧: swcpack (Rust-based) - bundle JS/TS
  • 🚧: Buck2

Android

  • IDE: Android Studio [Stable / Preview - RC/Canary]
  • Build Tool / Bundler (CLI): Gradle Wrapper ./gradlew

iOS

  • IDE: Xcode [stable / beta]
  • Build Tool / Bundler (CLI): xcodebuild

Automate

CI workflow (yml)

  • Examples
  • GitHub Actions (yml)
    • Xcode - Build and Analyze
    • iOS (build and test on sim)
    • Java with Gradle (wrapper)
    • Android CI (Gradle)
    • fastlane
    • Super Linter
    • etc
  • BitRise (yml)
    • CocoaPods
    • Cert/Profile install
    • Xcode Archive/Export
    • Android Build
    • fastlane
    • etc
  • CircleCI
  • AppCenter
    • CodePush only
    • Unreliable, Detox E2E not pos
  • Host runner