Programming language: Go
License: MIT License
Tags: Resource Embedding    
Latest version: v0.2.0

esc alternatives and similar packages

Based on the "Resource Embedding" category.
Alternatively, view esc alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of esc or a related project?

Add another 'Resource Embedding' Package




esc embeds files into go programs and provides http.FileSystem interfaces to them.

It adds all named files or files recursively under named directories at the path specified. The output file provides an http.FileSystem interface with zero dependencies on packages outside the standard library.


go get -u github.com/mjibson/esc


esc [flag] [name ...]

The flags are:

    output filename, defaults to stdout
    package name of output file, defaults to main
    strip given prefix from filenames
    regular expression for files to ignore
    regular expression for files to include
    Unix timestamp to override as modification time for all files
    unexport functions by prefixing them with esc, e.g. FS -> escFS
    do not compress files

Accessing Embedded Files

After producing an output file, the assets may be accessed with the FS() function, which takes a flag to use local assets instead (for local development).

  • (_esc)?FS(Must)?(Byte|String) returns an asset as a (byte slice|string).
  • (_esc)?FSMust(Byte|String) panics if the asset is not found.

Go Generate

esc can be invoked by go generate:

//go:generate esc -o static.go -pkg server static


Embedded assets can be served with HTTP using the http.FileServer. Assuming you have a directory structure similar to the following:

├── main.go
└── static
    ├── css
    │   └── style.css
    └── index.html

Where main.go contains:

package main

import (

func main() {
    // FS() is created by esc and returns a http.Filesystem.
    http.Handle("/static/", http.FileServer(FS(false)))
    log.Fatal(http.ListenAndServe(":8080", nil))

  1. Generate the embedded data: esc -o static.go static
  2. Start the server: go run main.go static.go
  3. Access http://localhost:8080/static/index.html to view the files.

You can see worked example in [example](example) dir just run it as go run example/main.go example/static.go