簡體   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