Как в golang сделать компрессию js/css файлов?

Пользователь

от akeem , в категории: HTML/CSS , 6 месяцев назад

Как в golang сделать компрессию js/css файлов?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от kyleigh_runte , 6 месяцев назад

@akeem 

В Go есть несколько пакетов, которые могут помочь сжать и минимизировать файлы JavaScript и CSS. Вот несколько примеров:

  1. github.com/tdewolff/minify - это пакет, который позволяет сжимать и минимизировать различные типы файлов, включая JavaScript и CSS. Вы можете установить его с помощью команды go get github.com/tdewolff/minify. Вот пример его использования:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package main

import (
    "fmt"
    "io/ioutil"

    "github.com/tdewolff/minify"
    "github.com/tdewolff/minify/js"
    "github.com/tdewolff/minify/css"
)

func main() {
    input, err := ioutil.ReadFile("script.js")
    if err != nil {
        panic(err)
    }

    m := minify.New()
    m.AddFunc("text/javascript", js.Minify)
    m.AddFunc("text/css", css.Minify)

    compressed, err := m.Bytes("text/javascript", input)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(compressed))
}


  1. github.com/tdewolff/parse - еще один пакет от того же автора, который позволяет разбирать и минимизировать CSS файлы. Вы можете установить его с помощью команды go get github.com/tdewolff/parse. Вот пример его использования:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main

import (
    "fmt"
    "io/ioutil"

    "github.com/tdewolff/parse/v2/css"
)

func main() {
    input, err := ioutil.ReadFile("styles.css")
    if err != nil {
        panic(err)
    }

    stylesheet, err := css.Parse(input, false)
    if err != nil {
        panic(err)
    }

    // Минимизировать стили
    stylesheet.Minify().WriteToIndent(nil)

    fmt.Println(css.Print(stylesheet))
}


  1. github.com/gorilla/handlers - это пакет, предлагающий HTTP-обработчики для обработки сжатия и минимизации файлов. Вы можете установить его с помощью команды go get github.com/gorilla/handlers. Вот пример его использования:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
package main

import (
    "net/http"
    "github.com/gorilla/handlers"
)

func main() {
    // Обработчик для сжатия и минимизации файлов
    http.Handle("/static/", handlers.CompressHandler(http.StripPrefix("/static/", http.FileServer(http.Dir("./static")))))

    // Запуск сервера
    http.ListenAndServe(":8080", nil)
}


Указанные выше пакеты могут помочь вам сжать и минимизировать файлы JavaScript и CSS в Go. Вы можете использовать эти пакеты в своем проекте, чтобы достичь требуемой компрессии файлов.