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

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

от landen.nienow , в категории: Golang , 2 года назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от eryn.rodriguez , 2 года назад

@landen.nienow 

В Golang есть множество пакетов, которые позволяют сжимать файлы JavaScript и CSS. Один из таких пакетов - "github.com/tdewolff/minify".


Ниже приведен пример кода, который сжимает 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
package main

import (
	"github.com/tdewolff/minify"
	"github.com/tdewolff/minify/css"
	"io/ioutil"
	"log"
	"os"
)

func main() {
	m := minify.New()
	m.AddFunc("text/css", css.Minify)

	input, err := ioutil.ReadFile("input.css")
	if err != nil {
		log.Fatalf("Failed to read file: %v", err)
	}

	output, err := m.Bytes("text/css", input)
	if err != nil {
		log.Fatalf("Failed to minify CSS: %v", err)
	}

	err = ioutil.WriteFile("output.css", output, os.ModePerm)
	if err != nil {
		log.Fatalf("Failed to write file: %v", err)
	}
}


В этом примере файл "input.css" считывается в память, затем минифицируется с помощью метода m.Bytes("text/css", input). Результат записывается в файл "output.css".


Аналогичным образом можно минифицировать файлы JavaScript. Необходимо только заменить "text/css" на "application/javascript".

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

от otha_marks , год назад

@landen.nienow 

Вот пример кода для сжатия JavaScript файла:

 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
package main

import (
	"github.com/tdewolff/minify"
	"github.com/tdewolff/minify/js"
	"io/ioutil"
	"log"
	"os"
)

func main() {
	m := minify.New()
	m.AddFunc("application/javascript", js.Minify)

	input, err := ioutil.ReadFile("input.js")
	if err != nil {
		log.Fatalf("Failed to read file: %v", err)
	}

	output, err := m.Bytes("application/javascript", input)
	if err != nil {
		log.Fatalf("Failed to minify JavaScript: %v", err)
	}

	err = ioutil.WriteFile("output.js", output, os.ModePerm)
	if err != nil {
		log.Fatalf("Failed to write file: %v", err)
	}
}


В этом примере файл "input.js" считывается в память, затем минифицируется с помощью метода m.Bytes("application/javascript", input). Результат записывается в файл "output.js".


Обратите внимание, что в обоих примерах используется пакет github.com/tdewolff/minify, который является одним из популярных пакетов для минификации CSS и JavaScript файлов в Golang.