ExtJS 6:是否应将workspace.json加入.gitignore?
问题原因
我之前在团队协作开发ExtJS项目时也碰到过一模一样的问题!这其实是Sencha Cmd的一个“小特性”——当执行sencha app upgrade(甚至部分其他命令)时,它会重新读写workspace.json文件,哪怕配置内容完全没变化,也会按照自身的格式化逻辑调整空格、缩进,导致Git检测到文件变更。这不是你最初的操作有误,完全是工具本身的行为导致的。
解决方案选项
针对这个问题,团队里常用两种解决思路,你可以根据团队情况选择:
选项1:将workspace.json加入.gitignore
这是最省心的方案,也是很多ExtJS团队的常规操作:
- 直接把
workspace.json添加到你的.gitignore中,这样每个开发者克隆仓库后,执行sencha app upgrade <SDK路径>或者sencha app build时会自动生成适合自己本地环境的workspace.json。 - 注意事项:要在项目README里明确标注团队使用的ExtJS SDK版本(比如你这里的6.5.3.57),确保所有成员使用的SDK路径和版本一致;另外,项目核心配置(比如
app.json)一定要保留在版本控制里,它才是决定项目依赖和构建规则的关键文件。
选项2:统一格式化规则,减少无意义变更
如果你们不想忽略workspace.json,可以试试这两个办法:
- 统一Sencha Cmd版本:不同版本的Cmd对JSON的格式化逻辑可能有细微差异,团队全员使用同一个版本的Cmd,能大幅减少这类空格变更的出现。
- 添加Git预提交钩子:用工具标准化
workspace.json的格式,比如用jq(一个轻量的JSON处理工具)在提交前自动格式化文件。可以在项目的.git/hooks/pre-commit里添加脚本:
这样每次提交前都会把#!/bin/sh if [ -f workspace.json ]; then jq . workspace.json > workspace.json.tmp && mv workspace.json.tmp workspace.json fiworkspace.json转换成标准格式化的JSON,避免空格差异导致的提交。
对你初始操作的验证
你最开始的操作流程:sencha generate app → sencha app watch做初始修改 → git init提交,完全是正确的ExtJS项目初始化流程,没有任何问题。workspace.json的变更纯粹是工具后续操作的副作用。
内容的提问来源于stack exchange,提问作者user9048585
相关产品推荐
相关产品推荐

