Skip to content

Commit 753b12c

Browse files
committed
Use logicsquad minifier for css
1 parent 8d41864 commit 753b12c

File tree

12 files changed

+25
-271
lines changed

12 files changed

+25
-271
lines changed

README.md

Lines changed: 5 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@
1414

1515
A simple gradle plugin to minify CSS and JavaScript files.
1616

17-
Uses [Google Closure Compiler](https://github.com/google/closure-compiler) and [custom
18-
](https://github.com/616slayer616/closure-stylesheets) [Google Closure Stylesheets
19-
](https://github.com/google/closure-stylesheets) for minification.
17+
Uses [Google Closure Compiler](https://github.com/google/closure-compiler) and (https://github.com/logicsquad/minifier) [Minifier](https://github.com/google/closure-stylesheets) for minification.
2018

2119
## Getting started
2220

@@ -128,34 +126,7 @@ tasks.create<JsMinifyTask>("additionalJsMinify") { //this: JsMinifyTask
128126
task additionalJsMinify(type: org.gradlewebtools.minify.JsMinifyTask) {
129127
srcDir = project.file("js")
130128
dstDir = project.file("build/js")
131-
options.ignoreMinFiles = false
132-
options.compilationLevel = com.google.javascript.jscomp.CompilationLevel.SIMPLE_OPTIMIZATIONS
133-
env = com.google.javascript.jscomp.CompilerOptions.Environment.BROWSER
134-
options.languageIn = null
135-
options.languageOut = null
136-
warningLevel = com.google.javascript.jscomp.WarningLevel.QUIET
137-
options.extraAnnotationNames = listOf()
138-
options.strictModeInput = false
139-
options.debug = false
140-
options.exportLocalPropertyDefinitions = false
141-
options.formatting = listOf()
142-
options.generateExports = false
143-
options.renamePrefixNamespace = null
144-
options.renameVariablePrefix = null
145-
moduleResolution = com.google.javascript.jscomp.deps.ModuleLoader.ResolutionMode.BROWSER
146-
options.processCommonJsModules = false
147-
options.packageJsonEntryNames = listOf()
148-
options.angularPass = false
149-
options.dartPass = false
150-
options.forceInjectLibrary = listOf()
151-
options.polymerVersion = null
152-
options.rewritePolyfills = false
153-
charset = kotlin.textCharsets.UTF_8
154-
options.checksOnly = false
155-
options.browserFeaturesetYear = null
156-
options.createSourceMaps = false
157-
options.originalFileNames = false
158-
options.copyOriginalFile = false
129+
159130
}
160131
```
161132

@@ -206,31 +177,6 @@ tasks.create<CssMinifyTask>("additionalCssMinify") { //this: CssMinifyTask
206177
dstDir = project.file("build/css")
207178
options {
208179
ignoreMinFiles = false
209-
inputOrientation = com.google.common.css.JobDescription.InputOrientation.LTR
210-
outputOrientation = com.google.common.css.JobDescription.OutputOrientation.LTR
211-
outputFormat = com.google.common.css.JobDescription.OutputFormat.COMPRESSED
212-
copyrightNotice = null
213-
trueConditionNames = listOf()
214-
allowDefPropagation = true
215-
allowUnrecognizedFunctions = true
216-
allowedNonStandardFunctions = listOf()
217-
allowedUnrecognizedProperties = listOf()
218-
allowUnrecognizedProperties = true
219-
vendor = null
220-
allowKeyframes = true
221-
allowWebkitKeyframes = true
222-
processDependencies = true
223-
excludedClassesFromRenaming = listOf()
224-
simplifyCss = true
225-
eliminateDeadStyles = false
226-
cssRenamingPrefix = ""
227-
preserveComments = false
228-
outputRenamingMapFormat = com.google.common.css.OutputRenamingMapFormat.JSON
229-
compileConstants = mapOf()
230-
options.sourceMapLevel = com.google.common.css.JobDescription.SourceMapDetailLevel.DEFAULT
231-
createSourceMaps = false
232-
originalFileNames = false
233-
copyOriginalFile = false
234180
}
235181
}
236182
```
@@ -239,32 +185,9 @@ tasks.create<CssMinifyTask>("additionalCssMinify") { //this: CssMinifyTask
239185
task cssMinify(type: org.gradlewebtools.minify.CssMinifyTask) {
240186
srcDir = project.file("css")
241187
dstDir = project.file("build/css")
242-
options.ignoreMinFiles = false
243-
options.inputOrientation = InputOrientation.LTR
244-
options.outputOrientation = OutputOrientation.LTR
245-
outputFormat = com.google.common.css.JobDescription.OutputFormat.COMPRESSED
246-
options.copyrightNotice = null
247-
options.trueConditionNames = listOf()
248-
options.allowDefPropagation = true
249-
options.allowUnrecognizedFunctions = true
250-
options.allowedNonStandardFunctions = listOf()
251-
options.allowedUnrecognizedProperties = listOf()
252-
options.allowUnrecognizedProperties = true
253-
options.vendor = null
254-
options.allowKeyframes = true
255-
options.allowWebkitKeyframes = true
256-
options.processDependencies = true
257-
options.excludedClassesFromRenaming = listOf()
258-
options.simplifyCss = true
259-
options.eliminateDeadStyles = false
260-
options.cssRenamingPrefix = ""
261-
options.preserveComments = false
262-
outputRenamingMapFormat = com.google.common.css.OutputRenamingMapFormat.JSON
263-
options.compileConstants = mapOf()
264-
options.sourceMapLevel = com.google.common.css.JobDescription.SourceMapDetailLevel.DEFAULT
265-
options.createSourceMaps = false
266-
options.originalFileNames = false
267-
options.copyOriginalFile = false
188+
options {
189+
ignoreMinFiles = false
190+
}
268191
}
269192
```
270193

@@ -279,25 +202,3 @@ task cssMinify(type: org.gradlewebtools.minify.CssMinifyTask) {
279202
| option | effect | values | default |
280203
|-------------------------------|-------------------------------|--------------------------------------------------------------------------|----------------------------------------------------------------------------------|
281204
| ignoreMinFiles | ignore files named ".min." | true, false | false |
282-
| inputOrientation | inputOrientation | com.google.common.css.JobDescription.InputOrientation | com.google.common.css.JobDescription.OutputOrientation.LTR |
283-
| outputOrientation | outputOrientation | com.google.common.css.JobDescription.OutputOrientation | com.google.common.css.JobDescription.OutputOrientation.LTR |
284-
| outputFormat | outputFormat | com.google.common.css.JobDescription.OutputFormat | com.google.common.css.JobDescription.OutputFormat.COMPRESSED |
285-
| copyrightNotice | copyrightNotice | String | null |
286-
| trueConditionNames | trueConditionNames | list of strings | empty list |
287-
| allowDefPropagation | allowDefPropagation | true, false | true |
288-
| allowUnrecognizedFunctions | allowUnrecognizedFunctions | true, false | true |
289-
| allowedNonStandardFunctions | allowedNonStandardFunctions | list of strings | empty list |
290-
| allowedUnrecognizedProperties | allowedUnrecognizedProperties | list of strings | empty list |
291-
| allowUnrecognizedProperties | allowUnrecognizedProperties | true, false | true |
292-
| vendor | vendor | com.google.common.css.Vendor | null |
293-
| allowKeyframes | allowKeyframes | true, false | true |
294-
| allowWebkitKeyframes | allowWebkitKeyframes | true, false | true |
295-
| processDependencies | processDependencies | true, false | true |
296-
| excludedClassesFromRenaming | excludedClassesFromRenaming | list of strings | empty list |
297-
| simplifyCss | simplifyCss | true, false | true |
298-
| eliminateDeadStyles | eliminateDeadStyles | true, false | false |
299-
| cssRenamingPrefix | CSS renaming prefix | String | empty string |
300-
| preserveComments | preserveComments | true, false | false |
301-
| outputRenamingMapFormat | outputRenamingMapFormat | com.google.common.cssOutputRenamingMapFormat | com.google.common.cssOutputRenamingMapFormat.JSON |
302-
| compileConstants | compileConstants | map | empty map |
303-
| sourceMapLevel | sourceMapLevel | com.google.common.css.JobDescription.JobDescription.SourceMapDetailLevel | com.google.common.css.JobDescription.JobDescription.SourceMapDetailLevel.DEFAULT |

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ repositories {
5555
dependencies {
5656
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
5757
implementation("com.google.javascript:closure-compiler:v20240317")
58-
implementation("org.padler:closure-stylesheets:1.8.0")
58+
implementation("net.logicsquad:minifier:1.3")
5959

6060
testImplementation("io.kotest:kotest-runner-junit5:5.9.1")
6161
testImplementation("io.kotest:kotest-assertions-core:5.9.1")
Lines changed: 11 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
11
package org.gradlewebtools.minify.minifier.css
22

3-
import com.google.common.css.IdentitySubstitutionMap
4-
import com.google.common.css.JobDescription
5-
import com.google.common.css.JobDescriptionBuilder
6-
import com.google.common.css.SourceCode
7-
import com.google.common.css.compiler.ClosureStylesheetCompiler
8-
import com.google.common.css.compiler.ast.BasicErrorManager
9-
import com.google.common.css.compiler.ast.GssError
10-
import com.google.common.css.compiler.gssfunctions.DefaultGssFunctionMapProvider
3+
import net.logicsquad.minifier.AbstractMinifier
4+
import net.logicsquad.minifier.MinificationException
5+
import net.logicsquad.minifier.css.CSSMinifier
116
import org.gradlewebtools.minify.minifier.Minifier
12-
import org.gradlewebtools.minify.minifier.result.Error
13-
import org.gradlewebtools.minify.minifier.result.Warning
14-
import java.io.File
15-
import java.io.IOException
16-
import java.io.UncheckedIOException
17-
import java.nio.file.Files
7+
import java.io.*
188

199
/**
2010
* Uses closure stylesheets.
@@ -28,72 +18,19 @@ class CssMinifier(override var minifierOptions: CssMinifierOptions = CssMinifier
2818

2919
override fun minifyFile(srcFile: File, dstFile: File) {
3020
try {
31-
val job = createJobDescription(srcFile)
32-
val errorManager = CompilerErrorManager()
33-
val compiler = ClosureStylesheetCompiler(job, errorManager)
34-
var sourcemapFile: File? = null
35-
if (minifierOptions.createSourceMaps) {
36-
sourcemapFile = File(dstFile.absolutePath + ".map")
37-
}
38-
var compilerOutput = compiler.execute(null, sourcemapFile)
39-
if (sourcemapFile != null) {
40-
compilerOutput += "\n//# sourceMappingURL=${sourcemapFile.name}"
41-
}
42-
writeToFile(dstFile, compilerOutput)
21+
val input: Reader = FileReader(srcFile)
22+
val output: Writer = FileWriter(dstFile)
23+
val min: AbstractMinifier = CSSMinifier(input)
24+
25+
min.minify(output)
4326
} catch (e: IOException) {
4427
throw UncheckedIOException(e)
28+
} catch (e: MinificationException) {
29+
throw RuntimeException(e)
4530
}
4631
}
4732

4833
override fun rename(oldName: String): String {
4934
return oldName.replace(".css", ".min.css")
5035
}
51-
52-
@Throws(IOException::class)
53-
private fun createJobDescription(file: File): JobDescription {
54-
val builder = JobDescriptionBuilder()
55-
builder.setInputOrientation(minifierOptions.inputOrientation)
56-
builder.setOutputOrientation(minifierOptions.outputOrientation)
57-
builder.setOutputFormat(minifierOptions.outputFormat)
58-
builder.setCopyrightNotice(minifierOptions.copyrightNotice)
59-
builder.setTrueConditionNames(minifierOptions.trueConditionNames)
60-
builder.setAllowDefPropagation(minifierOptions.allowDefPropagation)
61-
builder.setAllowUnrecognizedFunctions(minifierOptions.allowUnrecognizedFunctions)
62-
builder.setAllowedNonStandardFunctions(minifierOptions.allowedNonStandardFunctions)
63-
builder.setAllowedUnrecognizedProperties(minifierOptions.allowedUnrecognizedProperties)
64-
builder.setAllowUnrecognizedProperties(minifierOptions.allowUnrecognizedProperties)
65-
builder.setVendor(minifierOptions.vendor)
66-
builder.setAllowKeyframes(minifierOptions.allowKeyframes)
67-
builder.setAllowWebkitKeyframes(minifierOptions.allowWebkitKeyframes)
68-
builder.setProcessDependencies(minifierOptions.processDependencies)
69-
builder.setExcludedClassesFromRenaming(minifierOptions.excludedClassesFromRenaming)
70-
builder.setSimplifyCss(minifierOptions.simplifyCss)
71-
builder.setEliminateDeadStyles(minifierOptions.eliminateDeadStyles)
72-
builder.setCssSubstitutionMapProvider { IdentitySubstitutionMap() }
73-
builder.setCssRenamingPrefix(minifierOptions.cssRenamingPrefix)
74-
builder.setPreserveComments(minifierOptions.preserveComments)
75-
builder.setOutputRenamingMapFormat(minifierOptions.outputRenamingMapFormat)
76-
builder.setCompileConstants(minifierOptions.compileConstants)
77-
builder.setGssFunctionMapProvider(DefaultGssFunctionMapProvider())
78-
builder.setSourceMapLevel(minifierOptions.sourceMapLevel)
79-
builder.setCreateSourceMap(minifierOptions.createSourceMaps)
80-
val fileContents = String(Files.readAllBytes(file.toPath()))
81-
builder.addInput(SourceCode(file.name, fileContents))
82-
return builder.jobDescription
83-
}
84-
85-
internal inner class CompilerErrorManager : BasicErrorManager() {
86-
87-
override fun print(msg: String) {
88-
// Do nothing to have all errors at the end
89-
}
90-
91-
override fun report(error: GssError) {
92-
report.add(Error(error))
93-
}
94-
95-
override fun reportWarning(warning: GssError) {
96-
report.add(Warning(warning))
97-
}
98-
}
9936
}

src/main/kotlin/org/gradlewebtools/minify/minifier/css/CssMinifierOptions.kt

Lines changed: 3 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,17 @@
11
package org.gradlewebtools.minify.minifier.css
22

3-
import com.google.common.css.JobDescription.*
4-
import com.google.common.css.OutputRenamingMapFormat
5-
import com.google.common.css.Vendor
63
import kotlinx.serialization.Serializable
74
import org.gradlewebtools.minify.minifier.MinifierOptions
85

96
@Serializable
107
data class CssMinifierOptions(
11-
var inputOrientation: InputOrientation = InputOrientation.LTR,
12-
var outputOrientation: OutputOrientation = OutputOrientation.LTR,
13-
var outputFormat: OutputFormat = OutputFormat.COMPRESSED,
14-
var copyrightNotice: String? = null,
15-
var trueConditionNames: List<String> = listOf(),
16-
var allowDefPropagation: Boolean = true,
17-
var allowUnrecognizedFunctions: Boolean = true,
18-
var allowedNonStandardFunctions: List<String> = listOf(),
19-
var allowedUnrecognizedProperties: List<String> = listOf(),
20-
var allowUnrecognizedProperties: Boolean = true,
21-
var vendor: Vendor? = null,
22-
var allowKeyframes: Boolean = true,
23-
var allowWebkitKeyframes: Boolean = true,
24-
var processDependencies: Boolean = true,
25-
var excludedClassesFromRenaming: List<String> = listOf(),
26-
var simplifyCss: Boolean = true,
27-
var eliminateDeadStyles: Boolean = false,
28-
var cssRenamingPrefix: String = "",
29-
var preserveComments: Boolean = false,
30-
var outputRenamingMapFormat: OutputRenamingMapFormat = OutputRenamingMapFormat.JSON,
31-
var compileConstants: Map<String, Int> = mapOf(),
32-
var sourceMapLevel: SourceMapDetailLevel = SourceMapDetailLevel.DEFAULT
8+
var dummy: String? = null
339
) : MinifierOptions() {
34-
3510
constructor(
3611
ignoreMinFiles: Boolean? = null,
37-
inputOrientation: InputOrientation = InputOrientation.LTR,
38-
outputOrientation: OutputOrientation = OutputOrientation.LTR,
39-
outputFormat: OutputFormat = OutputFormat.COMPRESSED,
40-
copyrightNotice: String? = null,
41-
trueConditionNames: List<String> = listOf(),
42-
allowDefPropagation: Boolean = true,
43-
allowUnrecognizedFunctions: Boolean = true,
44-
allowedNonStandardFunctions: List<String> = listOf(),
45-
allowedUnrecognizedProperties: List<String> = listOf(),
46-
allowUnrecognizedProperties: Boolean = true,
47-
vendor: Vendor? = null,
48-
allowKeyframes: Boolean = true,
49-
allowWebkitKeyframes: Boolean = true,
50-
processDependencies: Boolean = true,
51-
excludedClassesFromRenaming: List<String> = listOf(),
52-
simplifyCss: Boolean = true,
53-
eliminateDeadStyles: Boolean = false,
54-
cssRenamingPrefix: String = "",
55-
preserveComments: Boolean = false,
56-
outputRenamingMapFormat: OutputRenamingMapFormat = OutputRenamingMapFormat.JSON,
57-
compileConstants: Map<String, Int> = mapOf(),
58-
sourceMapLevel: SourceMapDetailLevel = SourceMapDetailLevel.DEFAULT,
59-
createSourceMaps: Boolean? = null,
60-
originalFileNames: Boolean? = null,
61-
copyOriginalFile: Boolean? = null
12+
dummy: String? = null
6213
) : this(
63-
inputOrientation,
64-
outputOrientation,
65-
outputFormat,
66-
copyrightNotice,
67-
trueConditionNames,
68-
allowDefPropagation,
69-
allowUnrecognizedFunctions,
70-
allowedNonStandardFunctions,
71-
allowedUnrecognizedProperties,
72-
allowUnrecognizedProperties,
73-
vendor,
74-
allowKeyframes,
75-
allowWebkitKeyframes,
76-
processDependencies,
77-
excludedClassesFromRenaming,
78-
simplifyCss,
79-
eliminateDeadStyles,
80-
cssRenamingPrefix,
81-
preserveComments,
82-
outputRenamingMapFormat,
83-
compileConstants,
84-
sourceMapLevel
14+
dummy
8515
) {
8616
if (ignoreMinFiles != null) this.ignoreMinFiles = ignoreMinFiles
8717
if (createSourceMaps != null) this.createSourceMaps = createSourceMaps

0 commit comments

Comments
 (0)