go buffalo工作流程中的/ public / assets在哪里生成?

时间:2018-11-07 15:49:43

标签: css go assets buffalo

在go buffalo中,有一个生成的.gitignore文件忽略了公共/资产。但是,与此同时,生成的css和js对于获取“真正的” buffalo应用程序至关重要。因此,有一个我无法完全理解的断开连接,即默认情况下,任何构建应用程序本身的版本控制系统都缺少对于部署应用程序来说似乎很重要的东西。

我注意到的

  • buffalo构建不会在公共/资产中生成内容。

  • buffalo开发人员也不会生成此内容。

  • 在删除public/assets/*之后运行buffalo dev会导致该站点没有任何CSS,这意味着它破坏了功能。

因此,如此。据我所知/ public / assets既必不可少,又不是动态创建的。

因此,我的问题是,在构建时如何在水牛工作流中重新生成公共/资产(即,如何保留.gitignore默认值)?或者人们通常在哪里打包资产如果不在版本控制中?

2 个答案:

答案 0 :(得分:1)

所以要回答最初的问题,即在何处生成公共/资产-答案是“在创建时”或“在构建时,如果您没有它们,或者您引导空目录”。希望在合并下面提到的PR之后,此问题的答案将是“在创建时,或者在构建时,如果您的存储库中不存在它们(即因为它们被忽略),那么在构建时”。

这两点(为什么本地构建不生成它们+为何docker build不生成它们)有完全不相关且不同的答案,因此我将在单独的项目符号中分别对待它们。

  • 我们发现,实际上,根据存储库的状态,如果丢失/删除了webpack文件,则buffalo环境不会为您重新生成它们,这绝对不是一个错误,因为它是运行水牛而不产生任何资产的有效用例(尽管这对我来说似乎不是一个用例,但可能值得提出更改以使水牛对此更自以为是)。

  • 关于docker构建本身,似乎如果您添加mkdir语句以确保在运行水牛构建之前(即在您的Dockerfile中)公共/资产存在,那么您可以补偿您忽略了该目录的事实,并且该目录将正确地填充到静态版本中。

由于后一种用例是更重要的用例,因此我在指导下创建了一个拉取请求来解决此问题(例如,使其成为现实,这样您就无需手动添加mkdir public / assets步骤)。的水牛社区,可以在这里找到: https://github.com/gobuffalo/buffalo/pull/1447

简而言之:在此PR合并之前,如果您需要资产来构建可部署对象(您可能会这样做),请从gitignore中删除public / assets行并将其提交到版本控制中,以便可以直接构建您的代码没有外部依赖项,或者只是确保您在运行buffalo dev的位置构建代码。如果有第三个答案。从我的角度来看,前者是更云友好的解决方案,但是我是水牛的新手,所以我可能会在某些方面误解这些成语。

免责声明:我之所以回答这个问题,是因为我认为这可能对人们有用,但我不是水牛专家。关于资产在水牛上的工作方式,存在很多更深层次的技术观点docs / website(https://gobuffalo.io/en/docs/assets

答案 1 :(得分:0)

有一个源代码管理,其中包含您为应用程序创建的源代码;有一个构建服务器,它将源代码转换为可部署的工件;还有一些工件,其中包含运行该应用程序所需的所有内容(即资源) ,已编译的二进制文件,无源代码。

通常,源代码控制对于存储工件没有很好的解决方案。这就是为什么GitHub具有发布功能。在源代码控制之外,为工件找到合适的解决方案-选择哪种取决于您的构建和操作环境以及部署系统。例如,S3是存储内部构建工件的流行选择,因为它非常易于使用且价格合理。