工作中经常会创建一些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…