From 4b072ff9c54579339b77191fd2d59f8af9c9c5d9 Mon Sep 17 00:00:00 2001 From: Moustachos Date: Wed, 15 Jun 2022 11:04:29 +0200 Subject: [PATCH 1/3] Add fontRegex configuration option (default: FONT_REGEX) --- README.md | 1 + lib/index.js | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e9e0095..4c35137 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ module.exports = { // note: these settings are mutually exclusive and allowedFilesRegex has priority over skippedFilesRegex allowedFilesRegex: null, // RegExp to only target specific fonts by their names skippedFilesRegex: null, // RegExp to skip specific fonts by their names + fontRegex: /\.(eot|ttf|svg|woff|woff2)(\?.+)?$/, // RegExp for searching font files textRegex: /\.(js|css|html)$/, // RegExp for searching text reference webpackCompilationHook: 'thisCompilation', // Webpack compilation hook (for example PurgeCss webpack plugin use 'compilation' ) }), diff --git a/lib/index.js b/lib/index.js index 4e1abc2..ce13d2c 100644 --- a/lib/index.js +++ b/lib/index.js @@ -32,6 +32,7 @@ class FontminPlugin { allowedFilesRegex: null, skippedFilesRegex: null, appendHash: false, + fontRegex: FONT_REGEX, textRegex: TEXT_REGEX, webpackCompilationHook: WEBPACK_COMPILATION, }, @@ -49,7 +50,7 @@ class FontminPlugin { } hasFontAsset(assets) { - return _.find(assets, (val, key) => FONT_REGEX.test(key)) + return _.find(assets, (val, key) => this._options.fontRegex.test(key)) } findFontFiles(compilation) { @@ -85,7 +86,7 @@ class FontminPlugin { ), ) .flatten() - .filter(filename => FONT_REGEX.test(filename)) + .filter(filename => this._options.fontRegex.test(filename)) .map(getFilenameWithoutQueryString) .map(filename => { return { @@ -97,7 +98,7 @@ class FontminPlugin { return _(compilation.assets) .keys() - .filter(name => FONT_REGEX.test(name)) + .filter(name => this._options.fontRegex.test(name)) .map(asset => { const assetFilename = getFilenameWithoutQueryString(asset) const buffer = compilation.assets[asset].source() From 483d3378d9c1a1e65796a0376dcec24d2cad686f Mon Sep 17 00:00:00 2001 From: Moustachos Date: Fri, 4 Oct 2024 10:15:55 +0200 Subject: [PATCH 2/3] Use asset name to check against allowedFiles / skippedFiles regex (more reliable) --- lib/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/index.js b/lib/index.js index ce13d2c..7eece71 100644 --- a/lib/index.js +++ b/lib/index.js @@ -205,7 +205,7 @@ class FontminPlugin { const minifiableFonts = _(fontFiles) .groupBy('font') .filter(font => { - const fontName = font[0].font + const fontName = font[0].asset.split('/').pop() if (allowedFiles instanceof RegExp) { if (!fontName.match(allowedFiles)) { log(`Font "${fontName}" not allowed by pattern: ${allowedFiles}.`) From 056f62fc155325a41aefa068da92f7570d722052 Mon Sep 17 00:00:00 2001 From: Moustachos Date: Fri, 3 Jan 2025 16:39:51 +0100 Subject: [PATCH 3/3] Fix regular font filenames in findRegularFontFiles() --- lib/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/index.js b/lib/index.js index 7eece71..068fc9f 100644 --- a/lib/index.js +++ b/lib/index.js @@ -66,9 +66,8 @@ class FontminPlugin { return _(Array.from(compilation.modules)) .filter(module => this.hasFontAsset(module.buildInfo.assets)) .map(module => { - const filename = Array.from(module.buildInfo.assetsInfo.values())[0].sourceFilename - const font = path.basename(filename, path.extname(filename)) return _.keys(module.buildInfo.assets).map(asset => { + const font = path.basename(asset).split('.').shift() const buffer = module.buildInfo.assets[asset].source() const extension = path.extname(getFilenameWithoutQueryString(asset)) return {asset, extension, font, buffer} @@ -205,7 +204,7 @@ class FontminPlugin { const minifiableFonts = _(fontFiles) .groupBy('font') .filter(font => { - const fontName = font[0].asset.split('/').pop() + const fontName = font[0].font if (allowedFiles instanceof RegExp) { if (!fontName.match(allowedFiles)) { log(`Font "${fontName}" not allowed by pattern: ${allowedFiles}.`)