繁体   English   中英

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

[英]Where are /public/assets generated in the go buffalo workflow?

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

我注意到的

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

  • buffalo dev 也不生成此内容。

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

所以,这样。 据我所知, /public/assets 既是必不可少的,又是非动态创建的。

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

因此,要回答公共/资产在哪里生成的原始问题 - 答案是“在创建时”或“在构建时,如果您没有它们,并且您引导空目录”。 希望在合并下面提到的 PR 之后,这个问题的答案将是“在创建时,或者在构建时,如果它们不存在于您的存储库中(即因为它们被 gitignored)”。

这两点(为什么本地构建不生成它们 + 为什么 docker build 不生成它们)有完全不相关和不同的答案,所以我将分别对待它们。

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

  • 关于 docker build 本身,似乎如果您运行 buffalo build之前添加mkdir语句以确保 public/assets 存在(即在您的 Dockerfile 中),那么您可以补偿您忽略该目录的事实,并且它将在静态构建中正确填充。

由于后一个用例更重要,因此我在 buffalo 的指导下创建了一个 pull request 来解决这个问题(即使它不需要手动添加 mkdir public/assets 步骤)社区,可以在这里找到: https : //github.com/gobuffalo/buffalo/pull/1447

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

免责声明:我回答这个问题是因为我认为它可能对人们有用,但我不是水牛专家。 关于资产如何在 buffalo docs/website ( https://gobuffalo.io/en/docs/assets ) 上工作,有更深入的技术观点

有源代码控制,其中包含您为应用程序创建的源,有构建服务器,它将源转换为可部署的工件,还有工件,其中包含运行应用程序所需的一切(即资源、编译后的二进制文件) ,无源代码)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM