Skip to content

Commit c4f40af

Browse files
authored
Merge pull request #25 from devatherock/skip-minified-files
feat: Skipped `*.min.*` files from minification
2 parents df98ccd + 023b525 commit c4f40af

File tree

3 files changed

+59
-7
lines changed

3 files changed

+59
-7
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
### Changed
88
- Replaced `ubuntu-2004:2022.04.1` image with `ubuntu-2204:2023.04.2`
9+
- [#21](https://github.com/devatherock/minify-js/pull/21): Skipped `*.min.*` files from minification
910

1011
## [3.0.0] - 2023-11-26
1112
### Added

lib/minify-js.mjs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,15 @@ export function minifyFiles (inputPath, addSuffix, outputPath, inclusions, exclu
5555
} else {
5656
getLogger().debug('Input path ', inputPath, ' is a file')
5757

58-
if (supportedExtensions.includes(path.extname(inputPath))) {
59-
if ((inclusions.length === 0 || inclusions.some((regex) => regex.test(inputPath)))
60-
&& (exclusions.length === 0 || !exclusions.some((regex) => regex.test(inputPath)))) {
61-
minifyFile(inputPath, addSuffix, outputPath)
62-
} else {
63-
getLogger().debug('Skipping file ', inputPath, " that doesn't match any inclusions")
64-
}
58+
if (inputPath.includes('.min.')) {
59+
getLogger().debug('Skipping file ', inputPath, ' is already minified.')
60+
} else if (supportedExtensions.includes(path.extname(inputPath))) {
61+
if ((inclusions.length === 0 || inclusions.some((regex) => regex.test(inputPath)))
62+
&& (exclusions.length === 0 || !exclusions.some((regex) => regex.test(inputPath)))) {
63+
minifyFile(inputPath, addSuffix, outputPath)
64+
} else {
65+
getLogger().debug('Skipping file ', inputPath, " that doesn't match any inclusions")
66+
}
6567
} else {
6668
getLogger().debug('Skipping file ', inputPath, ' with unsupported extension')
6769
}

src/test/groovy/io/github/devatherock/minify/MinifyJsDockerSpec.groovy

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import spock.lang.Specification
66
import spock.lang.Unroll
77

88
import java.nio.file.Files
9+
import java.nio.file.Path
910
import java.nio.file.Paths
1011

1112
/**
@@ -71,6 +72,54 @@ class MinifyJsDockerSpec extends Specification {
7172
Files.deleteIfExists(Paths.get(outputCssFile))
7273
}
7374

75+
void 'test minify - *.min.* files should be skipped'() {
76+
given:
77+
String baseDir = System.properties['user.dir']
78+
String outputHtmlFile = "${baseDir}/src/test/resources/static/index.min.html"
79+
String outputJsFile = "${baseDir}/src/test/resources/scripts/scripts.min.js"
80+
String outputCssFile = "${baseDir}/src/test/resources/static/main.min.css"
81+
82+
and:
83+
Path recursiveOutputHtmlFile = Paths.get("${baseDir}/src/test/resources/static/index.min.min.html")
84+
Path recursiveOutputJsFile = Paths.get("${baseDir}/src/test/resources/scripts/scripts.min.min.js")
85+
Path recursiveOutputCssFile = Paths.get("${baseDir}/src/test/resources/static/main.min.min.css")
86+
87+
and:
88+
def command = ['docker', 'run', '--rm',
89+
'-v', "${baseDir}:/work",
90+
'-w=/work',
91+
imageName]
92+
93+
when:
94+
def output = ProcessUtil.executeCommand(command)
95+
ProcessUtil.executeCommand(command)
96+
97+
then:
98+
output[0] == 0
99+
output[1].contains('Minified /work/src/test/resources/static/index.html > /work/src/test/resources/static/index.min.html')
100+
output[1].contains('Minified /work/src/test/resources/static/main.css > /work/src/test/resources/static/main.min.css')
101+
output[1].contains('Minified /work/src/test/resources/scripts/scripts.js > /work/src/test/resources/scripts/scripts.min.js')
102+
new File(outputHtmlFile).text ==
103+
'<!doctype html><title>Test title</title><div id=layout><div id=main><div class=header><h1>Test body</h1></div></div></div>\n'
104+
new File(outputJsFile).text ==
105+
'$((function(){$("#templateAndModelForm *:input[type!=hidden]:first").focus()}));\n'
106+
new File(outputCssFile).text ==
107+
'.content{width:50%;display:block;margin:2% auto}.header{text-align:center;color:#444;border-bottom:1px solid #eee}\n'
108+
109+
and:
110+
Files.notExists(recursiveOutputHtmlFile)
111+
Files.notExists(recursiveOutputJsFile)
112+
Files.notExists(recursiveOutputCssFile)
113+
114+
cleanup:
115+
Files.deleteIfExists(Paths.get(outputHtmlFile))
116+
Files.deleteIfExists(Paths.get(outputJsFile))
117+
Files.deleteIfExists(Paths.get(outputCssFile))
118+
Files.deleteIfExists(recursiveOutputHtmlFile)
119+
Files.deleteIfExists(recursiveOutputJsFile)
120+
Files.deleteIfExists(recursiveOutputCssFile)
121+
}
122+
74123
@Unroll
75124
void 'test minify - input path specified. ci: #ci'() {
76125
given:

0 commit comments

Comments
 (0)