因此,要回答在哪里生成公共/资产的原始问题 - 答案是“在创建时”或“在构建时,如果你没有它们,并且如果你引导空目录”。希望在合并下面提到的 PR 之后,这个问题的答案将是“在创建时,或者在构建时,如果它们不存在于您的存储库中(即因为它们被 gitignored)”。
这两点(为什么本地构建不生成它们 + 为什么 docker build 不生成它们)具有完全不相关且不同的答案,因此我将分别用单独的项目符号处理它们。
我们发现实际上,根据您的存储库的状态,如果您丢失/删除 webpack 文件,水牛环境不会为您重新生成它们,这无论如何都不是错误,因为它是一个有效的用例在不生成任何资产的情况下运行 buffalo(虽然这不是一个对我来说似乎非常有用的用例,但可能值得提出一个改变,让 buffalo 在这方面更加固执己见)。
关于 docker build 本身,似乎如果您在运行 buffalo build之前mkdir
添加一条语句以确保 public/assets 存在(即在您的 Dockerfile 中),那么您可以弥补您忽略该目录的事实,并且它将在静态构建中正确填充。
由于后一个用例更重要,我在 buffalo 的指导下创建了一个拉取请求来解决这个问题(即,使您不需要手动添加 mkdir public/assets 步骤)社区,可以在这里找到:
https ://github.com/gobuffalo/buffalo/pull/1447 。
简而言之:在此 PR 合并之前,如果您需要您的资产来构建您的可部署项目(您可能会这样做),请从 gitignore 中删除 public/assets 行并将它们提交给版本控制,这样您的代码就可以直接构建而无需外部依赖项,或者只是确保在运行 buffalo dev 的同一位置构建代码。如果有第三个答案。从我的角度来看,前者是对云更友好的解决方案,但我是 buffalo 的新手,所以我可能在某些方面误解了这些习语。
免责声明:我回答这个问题是因为我认为它可能对人们有用,但我不是水牛专家。 关于资产如何在 buffalo 文档/网站 ( https://gobuffalo.io/en/docs/assets )上的工作,有更深入的技术观点