我曾经将已编译的最小CSS文件提交到存储库,然后我意识到每次都将整个文件发送出去,因为它是在一行中缩小的。因此,这意味着每次修改后,我都会在历史记录中保存一个完整的CSS文件,并且该文件会无故迅速添加。
我们可以忽略文本编辑器从LESS文件自动编译的CSS文件吗?
如果我将这些CSS文件放在.gitignore中,则它们将不在存储库中,但我还使用存储库来立即获得一个正常工作的网站。
我总是从本地计算机编译LESS文件,并希望保持这种状态(因此,建议用户不要使用Grunt或其他在用户加载页面时自动编译的文件,请:P)。
理想的解决方案是仅将最新文件保留在CSS文件的回购中。对于历史记录,我将检查LESS文件。 CSS文件只能在git clone / pull之后使站点正常工作。
答案 0 :(得分:3)
让我看看是否可以在这里总结您的要求:
这些是很常见的要求。大多数人在每次生产推送时都使用部署脚本一致地执行这样的操作-他们可以在服务器上触发以从仓库下载源代码,最小化所有CSS / JS / HTML并以任何新要求更新包管理器的脚本,重新加载任何需要重新加载的本地服务,刷新/预热缓存等。这可以是您编写的简单Web服务,然后通过钩子从GitHub / BitBucket /调用(无论是否推送到生产分支),也可以使用专门为帮助您可靠地部署而构建的部署框架。
如果您在成熟的框架中进行编码,那么可能已经有了一些部署工具,您可以花很少的精力就可以利用它。如果不是这样,那么如果您不想自己编写,就必须搜索特定于语言的内容(取决于您在服务器上需要执行的工作,除了复制存储库和缩小代码,还要自己编写一个Webhook)是最快,最简单的解决方案)。
答案 1 :(得分:1)
关键是要区分版本化的源文件和生成的构建工件。
LESS文件是源文件,属于您的Git源存储库。但是,生成的CSS文件是构建过程的产物,并且是构建工件,就像Windows .exe / .dll或Java .class文件一样。
出于以下几个原因,不应将构建工件提交给源存储库:
.gitignore
来忽略文件,则最佳实践通常将构建产品隔离到项目根目录的特定子目录中,例如build
或output
或bin
,其中存储了所有构建工件。然后可以将此单个子目录添加到.gitignore
。
您的自动化构建过程应该使构建工件可用于部署或下载。但是这些工件不会提交给源存储库。
答案 2 :(得分:0)
git push
作为部署脚本就通过网络发送文件而言,如果git
可以做到,scp
也可以做到。