【问题标题】:Where are /public/assets generated in the go buffalo workflow?go buffalo 工作流中的 /public/assets 在哪里生成?
【发布时间】:2018-11-07 15:49:42
【问题描述】:

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

我注意到了什么

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

  • buffalo dev 也不会生成此内容。

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

所以,这样。据我所知, /public/assets 既是必要的,也是非动态创建的。

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

【问题讨论】:

  • Buffalo 使用了一个名为 packr 的包,它将这些静态文件的内容直接嵌入到二进制文件中。但是,它仍应在public/assets/ 中生成文件。

标签: css go assets buffalo


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我想我的部分问题是:公共/资产是否是构建工件应用程序代码。如果是前者,这就是我的意思,那么问题是:如何构建这些工件?我没有看到'buffalo dev'在本地制作它们,但我可能会遗漏一些东西......而且看起来'buffalo build'并不总是让它们......
    • 我不是 buffalo 方面的专家,但如果这些文件包含在他们的 .gitignore 中,那么他们清楚地表明他们不认为它是应用程序代码。
    猜你喜欢
    • 2018-09-08
    • 1970-01-01
    • 2021-09-26
    • 2019-10-24
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    相关资源
    最近更新 更多