每次新建项目都要手写 .gitignore?不同语言、不同框架的忽略规则各不相同,复制粘贴也很麻烦。今天我们用 OpenCode 写一个命令行 .gitignore 生成器,内建 Python、Node.js、Go、Rust、Java 五套常用模板,一行命令即可生成。
python gitignore_gen.py python 一键生成 .gitignore我对 OpenCode 说:
> 帮我写一个 Python 命令行脚本,功能是根据项目类型生成 .gitignore 文件。先用 argparse 搭好框架,支持一个位置参数 type,还有 --list 列出模板、-o 指定输出路径、-f 强制覆盖。
OpenCode 直接生成了完整的骨架代码,包含 argparse.ArgumentParser 配置、四个参数的声明、以及 --list 和文件写入的基础逻辑。它甚至自动加了 choices=list(TEMPLATES.keys()) 来做参数校验,这个细节我并没有在提示词里明确要求,是它根据上下文推断出来的。
关键要点:提示词要一次性说清楚所有参数和行为,OpenCode 能准确理解并生成完整结构,不需要多次纠正。它还会主动补充你没想到但合情合理的细节。
我对 OpenCode 说:
> 在脚本里添加一个 TEMPLATES 字典,key 是项目类型名,value 是对应的 gitignore 内容。先支持 python、node、go、rust、java 五种。python 模板要包括 __pycache__/、venv/、.pytest_cache/ 等常见规则。
OpenCode 自动生成了五套模板,每套都包含了对应语言最常见的忽略规则——Python 的虚拟环境和 egg-info、Node.js 的 node_modules/、Go 的可执行文件、Rust 的 target/、Java 的 .class 文件。
关键要点:只列举关键规则让 OpenCode 推断,它会自动补全该语言生态中的常见忽略项。
我对 OpenCode 说:
> 加上文件存在检测,如果 .gitignore 已存在且没传 -f 就提示并退出。type 参数为空时显示帮助信息。
OpenCode 添加了 os.path.exists() 检查和对应的 sys.exit(1) 逻辑,并且用 nargs="?" 让位置参数变成可选,配合 parser.print_help() 给出友好提示。
我对 OpenCode 说:
> 用 python gitignore_gen.py --list 测试列出模板,再用 python gitignore_gen.py rust -f 生成 rust 的 .gitignore 看看输出是否正确。
OpenCode 执行测试,输出正常。代码 98 行,功能完整。
整个过程,我只用了 4 句自然语言描述需求,一行代码都没手动写。
#!/usr/bin/env python3
"""命令行 .gitignore 生成器 —— 内建常用模板,一行命令生成 .gitignore"""
import argparse
import os
import sys
TEMPLATES = {
"python": """__pycache__/
*.py[cod]
*.so
venv/
.venv/
.vscode/
.idea/
.pytest_cache/
*.egg-info/
dist/
build/
.env
.DS_Store
""",
"node": """node_modules/
dist/
build/
.env
.env.local
.vscode/
.idea/
*.log
coverage/
.DS_Store
""",
"go": """*.exe
*.dll
*.so
*.dylib
bin/
*.test
*.out
.vscode/
.idea/
.env
.DS_Store
""",
"rust": """target/
.vscode/
.idea/
.env
.DS_Store
""",
"java": """*.class
*.jar
target/
build/
.idea/
*.iml
.vscode/
.classpath
.project
.settings/
.DS_Store
""",
}
def main():
parser = argparse.ArgumentParser(description="快速生成项目 .gitignore 文件")
parser.add_argument("type", nargs="?", choices=list(TEMPLATES.keys()), help="项目类型")
parser.add_argument("-l", "--list", action="store_true", help="列出所有模板")
parser.add_argument("-o", "--output", default=".gitignore", help="输出路径")
parser.add_argument("-f", "--force", action="store_true", help="强制覆盖")
args = parser.parse_args()
if args.list:
print("可用的项目模板:")
for name in TEMPLATES:
print(f" {name}")
return
if not args.type:
parser.print_help()
sys.exit(1)
if os.path.exists(args.output) and not args.force:
print(f"文件 {args.output} 已存在。使用 -f 覆盖。")
sys.exit(1)
with open(args.output, "w", encoding="utf-8") as f:
f.write(TEMPLATES[args.type])
print(f"已生成 {args.output}(模板:{args.type})")
if __name__ == "__main__":
main()
用 OpenCode 开发这个工具,我只说了 4 句话,全程没有手写一行代码,从构思到可运行只花了 4 分钟。传统开发方式光是查 argparse 文档和调试至少需要 20 分钟。
OpenCode 的优势在于:你只需要用自然语言描述"想做什么",它会处理语法细节、边界条件和最佳实践。作为开发者,你的角色从"写代码"变成了"描述需求 + 审查结果",效率提升立竿见影。而且 OpenCode 会记住上下文——当你连续提出多个需求时,它知道你在说什么、改什么,不会把之前的逻辑搞乱。
如果再扩展,你可以继续对 OpenCode 说"加上从 GitHub gitignore 仓库在线拉取模板的功能"——这又是一个新需求,而 OpenCode 会无缝衔接,在当前代码基础上继续迭代。