一行命令生成xcode自定义模板工程

510 阅读1分钟

工作中经常会创建一些Demo研究新特性、测试一些功能等,每次都要创建新工程写一些模板代码,很浪费时间,本文教你如何利用xcodegen生成自定义模板项目

xcodegen 简介

xcodegen是一个可以生成.xcodgeproj的命令行工具

xcodegen安装

利用Homebrew安装:

brew install xcodegen

yml文件

xcodegen根据yml配置生成.xcodeproj文件

name: MyApp  // 会生成名为:MyApp.xcodeproj的文件
options:
  bundleIdPrefix: com.example 
packages:   
  SnapKit:
    url: https://github.com/SnapKit/SnapKit.git
    from: 5.7.1
targets:
  MyApp:
    type: application
    platform: iOS
    sources:
      - path: Source  // 资源、源码等文件的路径
    info:
      path: Source/Info.plist
      properties:
        UILaunchStoryboardName: LaunchScreen
        UIMainStoryboardFile: Main
        UIApplicationSceneManifest:
          UIApplicationSupportsMultipleScenes: false
          UISceneConfigurations:
            UIWindowSceneSessionRoleApplication:
              - UISceneConfigurationName: "Default Configuration"
                UISceneDelegateClassName: "\$(PRODUCT_MODULE_NAME).SceneDelegate"
                UISceneStoryboardFile: "Main"

将上面配置保存为project.yml文件,把模板文件夹Source放到与yml同级目录里

文件夹名称Source就是yml配置的名称,如下图所示:

注意:xcodegen只能生成.xcodeproj文件,源码、资源等文件不会自动生成,只能通过yml中配置路径的方式引入

生成MyApp.xcodeproj文件

终端cd到project.yml所在的目录,然后执行

xcodegen generate

会生成一个名为MyApp.xcodeproj的文件,点击打开就可以运行了

一行命令生成xcode模板项目

通过上面的方式生成工程后,我们就可以制作这样的脚本了

创建脚本

#!/bin/bash

# 1. 获取参数
if [ -z "$1" ]; then
  echo "❌ 使用方法: 缺少参数 <ProjectName>"
  exit 1
fi

PROJECT_NAME=$1
SRC_DIR=$PROJECT_NAME

# 2. 检查 xcodegen
if ! command -v xcodegen &> /dev/null; then
    echo "❌ xcodegen 未安装,请执行:brew install xcodegen"
    exit 1
fi

# 3. 创建项目结构
mkdir -p "$PROJECT_NAME/$SRC_DIR"
cd "$PROJECT_NAME" || exit 1

# 4. 拷贝模板源码文件(假设放在脚本同级目录下的 TemplateFiles 目录中)
TEMPLATE_DIR="这里填写自定义模板文件路径"
if [ -d "$TEMPLATE_DIR" ]; then
  echo "📄 拷贝源码文件到 $SRC_DIR/ ..."
  cp -R "$TEMPLATE_DIR"/. "$SRC_DIR"/
else
  echo "⚠️ 未找到模板目录 $TEMPLATE_DIR,跳过拷贝"
fi

# 5. 创建 project.yml
cat > project.yml <<EOF
name: $PROJECT_NAME
options:
  bundleIdPrefix: com.example
packages:
  SnapKit:
    url: https://github.com/SnapKit/SnapKit.git
    from: 5.7.1
targets:
  $PROJECT_NAME:
    type: application
    platform: iOS
    sources:
      - path: $SRC_DIR
    info:
      path: $SRC_DIR/Info.plist
      properties:
        UILaunchStoryboardName: LaunchScreen
        UIMainStoryboardFile: Main
        UIApplicationSceneManifest:
          UIApplicationSupportsMultipleScenes: false
          UISceneConfigurations:
            UIWindowSceneSessionRoleApplication:
              - UISceneConfigurationName: "Default Configuration"
                UISceneDelegateClassName: "\$(PRODUCT_MODULE_NAME).SceneDelegate"
                UISceneStoryboardFile: "Main"
EOF

# 6. 生成并打开项目
echo "📦 生成 Xcode 工程..."
xcodegen generate

open "$PROJECT_NAME.xcodeproj"

将脚本保存为iosapp.sh,使用 chmod 命令给脚本文件添加执行权限:

chmod +x myscript.sh

执行脚本命令:

可以先这样执行脚本:

./iosapp.sh MyDemo

如果没问题,再将脚本移动到一个可以在终端中随时调用的命令:

sudo mv iosapp.sh /usr/local/bin/iosapp

然后直接使用下面方式执行脚本命令:

iosapp 项目名称

参考资料: github.com/yonaskolb/X…