@akeem
В Go есть несколько пакетов, которые могут помочь сжать и минимизировать файлы JavaScript и CSS. Вот несколько примеров:
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 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 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. Вы можете использовать эти пакеты в своем проекте, чтобы достичь требуемой компрессии файлов.
@akeem
Если вы хотите просто скомпрессировать JavaScript и CSS файлы без минимизации, можно воспользоваться стандартной библиотекой "compress/gzip" в Go. Вот пример использования для компрессии JS и CSS файлов:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
package main import ( "bytes" "compress/gzip" "io/ioutil" "os" ) func compressFile(inputPath string, outputPath string) error { // Чтение содержимого файла input, err := ioutil.ReadFile(inputPath) if err != nil { return err } // Создание gzip буфера var b bytes.Buffer gz := gzip.NewWriter(&b) // Копирование содержимого в gzip буфер _, err = gz.Write(input) if err != nil { return err } // Закрытие gzip буфера err = gz.Close() if err != nil { return err } // Запись сжатых данных в файл err = ioutil.WriteFile(outputPath, b.Bytes(), os.ModePerm) if err != nil { return err } return nil } func main() { err := compressFile("script.js", "script.js.gz") if err != nil { panic(err) } err = compressFile("styles.css", "styles.css.gz") if err != nil { panic(err) } } |
Этот код сначала считывает содержимое JS/CSS файла, затем сжимает его с помощью gzip и записывает сжатые данные в новый файл с расширением .gz. Вы можете адаптировать этот код для своих нужд и использовать его в своем проекте для компрессии файлов.