推荐使用需要编译的静态资产的项目结构和构建系统?

时间:2015-11-03 20:13:45

标签: javascript node.js git go

我正在Go中创建一个服务器用于Web应用程序。该应用程序由Go代码组成,它将充当http服务器和应用程序的websocket服务器。它还将包含由Go代码提供的静态资产,例如html / css / javascript / images / etc.我计划使用go-bindata或等价物来打包最终的静态资产。所需的部署形式是单个二进制可执行文件,其中捆绑了所有静态资产。

但是,javascript资产的构建和组织方式要求它们需要编译步骤才能打包到Go源中以包含在已编译的二进制文件中。这将通过npm scripts / webpack / gulp / equivalent。

完成

我已阅读有关recommended project structure的官方Go文档,但它似乎并未解决我的用例。

我不知道前端代码和后端代码是否应该存在于相同的git repo或单独的代码中。我不知道构建过程应该处理运行javascript编译过程,go-bindata过程和go build过程。是否有推荐的方法来管理这类项目或类似成功项目的一些例子?

1 个答案:

答案 0 :(得分:3)

这就是我的所作所为:

$GOPATH/src/github.com/myname/myproject:
-main.go //handlers and code
-static.go //generated
-static
    -js
      -foo.js
    -html
    -css
    -img

我使用github.com/mjibson/escstatic中的所有内容转换为static.go中的虚拟文件系统。如果还有其他任务要生成css / js(我运行typescript编译器),那么可以在嵌入资产之前运行这些任务。

所有这些都通过评论连接到go generate

//go:generate sass or tsc or grunt or whatever
//go:generate esc -o static.go static