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..068fc9f 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) { @@ -65,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} @@ -85,7 +85,7 @@ class FontminPlugin { ), ) .flatten() - .filter(filename => FONT_REGEX.test(filename)) + .filter(filename => this._options.fontRegex.test(filename)) .map(getFilenameWithoutQueryString) .map(filename => { return { @@ -97,7 +97,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()