From 6bf62acfe7a334552a66fcf95e86f42c994d893e Mon Sep 17 00:00:00 2001 From: "DS.undeaD_D" <8116188+undeaDD@users.noreply.github.com> Date: Tue, 12 Mar 2024 13:27:58 +0100 Subject: [PATCH 1/2] Skip already minified files ( *.min.* ) --- lib/minify-js.mjs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/minify-js.mjs b/lib/minify-js.mjs index 184be2be..dae780ff 100644 --- a/lib/minify-js.mjs +++ b/lib/minify-js.mjs @@ -55,13 +55,15 @@ export function minifyFiles (inputPath, addSuffix, outputPath, inclusions, exclu } else { getLogger().debug('Input path ', inputPath, ' is a file') - if (supportedExtensions.includes(path.extname(inputPath))) { - if ((inclusions.length === 0 || inclusions.some((regex) => regex.test(inputPath))) - && (exclusions.length === 0 || !exclusions.some((regex) => regex.test(inputPath)))) { - minifyFile(inputPath, addSuffix, outputPath) - } else { - getLogger().debug('Skipping file ', inputPath, " that doesn't match any inclusions") - } + if (inputPath.includes('.min.')) { + getLogger().debug('Skipping file ', inputPath, ' is already minified.') + } else if (supportedExtensions.includes(path.extname(inputPath))) { + if ((inclusions.length === 0 || inclusions.some((regex) => regex.test(inputPath))) + && (exclusions.length === 0 || !exclusions.some((regex) => regex.test(inputPath)))) { + minifyFile(inputPath, addSuffix, outputPath) + } else { + getLogger().debug('Skipping file ', inputPath, " that doesn't match any inclusions") + } } else { getLogger().debug('Skipping file ', inputPath, ' with unsupported extension') } From 023b5259575957af10f73d7a09c996403b4beb1b Mon Sep 17 00:00:00 2001 From: devatherock Date: Sun, 28 Apr 2024 07:46:27 -0500 Subject: [PATCH 2/2] test: Added test to verify that *.min.* files are skipped --- CHANGELOG.md | 1 + .../minify/MinifyJsDockerSpec.groovy | 49 +++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 715fb002..ecd70f90 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ### Changed - Replaced `ubuntu-2004:2022.04.1` image with `ubuntu-2204:2023.04.2` +- [#21](https://github.com/devatherock/minify-js/pull/21): Skipped `*.min.*` files from minification ## [3.0.0] - 2023-11-26 ### Added diff --git a/src/test/groovy/io/github/devatherock/minify/MinifyJsDockerSpec.groovy b/src/test/groovy/io/github/devatherock/minify/MinifyJsDockerSpec.groovy index 02632550..472c4df7 100644 --- a/src/test/groovy/io/github/devatherock/minify/MinifyJsDockerSpec.groovy +++ b/src/test/groovy/io/github/devatherock/minify/MinifyJsDockerSpec.groovy @@ -6,6 +6,7 @@ import spock.lang.Specification import spock.lang.Unroll import java.nio.file.Files +import java.nio.file.Path import java.nio.file.Paths /** @@ -71,6 +72,54 @@ class MinifyJsDockerSpec extends Specification { Files.deleteIfExists(Paths.get(outputCssFile)) } + void 'test minify - *.min.* files should be skipped'() { + given: + String baseDir = System.properties['user.dir'] + String outputHtmlFile = "${baseDir}/src/test/resources/static/index.min.html" + String outputJsFile = "${baseDir}/src/test/resources/scripts/scripts.min.js" + String outputCssFile = "${baseDir}/src/test/resources/static/main.min.css" + + and: + Path recursiveOutputHtmlFile = Paths.get("${baseDir}/src/test/resources/static/index.min.min.html") + Path recursiveOutputJsFile = Paths.get("${baseDir}/src/test/resources/scripts/scripts.min.min.js") + Path recursiveOutputCssFile = Paths.get("${baseDir}/src/test/resources/static/main.min.min.css") + + and: + def command = ['docker', 'run', '--rm', + '-v', "${baseDir}:/work", + '-w=/work', + imageName] + + when: + def output = ProcessUtil.executeCommand(command) + ProcessUtil.executeCommand(command) + + then: + output[0] == 0 + output[1].contains('Minified /work/src/test/resources/static/index.html > /work/src/test/resources/static/index.min.html') + output[1].contains('Minified /work/src/test/resources/static/main.css > /work/src/test/resources/static/main.min.css') + output[1].contains('Minified /work/src/test/resources/scripts/scripts.js > /work/src/test/resources/scripts/scripts.min.js') + new File(outputHtmlFile).text == + 'Test title

Test body

\n' + new File(outputJsFile).text == + '$((function(){$("#templateAndModelForm *:input[type!=hidden]:first").focus()}));\n' + new File(outputCssFile).text == + '.content{width:50%;display:block;margin:2% auto}.header{text-align:center;color:#444;border-bottom:1px solid #eee}\n' + + and: + Files.notExists(recursiveOutputHtmlFile) + Files.notExists(recursiveOutputJsFile) + Files.notExists(recursiveOutputCssFile) + + cleanup: + Files.deleteIfExists(Paths.get(outputHtmlFile)) + Files.deleteIfExists(Paths.get(outputJsFile)) + Files.deleteIfExists(Paths.get(outputCssFile)) + Files.deleteIfExists(recursiveOutputHtmlFile) + Files.deleteIfExists(recursiveOutputJsFile) + Files.deleteIfExists(recursiveOutputCssFile) + } + @Unroll void 'test minify - input path specified. ci: #ci'() { given: