diff --git a/npm-packages/meteor-rspack/index.d.ts b/npm-packages/meteor-rspack/index.d.ts index abbddc1ec9..60e0b5d821 100644 --- a/npm-packages/meteor-rspack/index.d.ts +++ b/npm-packages/meteor-rspack/index.d.ts @@ -25,6 +25,12 @@ type MeteorEnv = Record & { isReactEnabled: boolean; isBlazeEnabled: boolean; isBlazeHotEnabled: boolean; + /** + * A function that creates an instance of HtmlRspackPlugin with default options. + * @param options - Optional configuration options that will be merged with defaults + * @returns An instance of HtmlRspackPlugin + */ + HtmlRspackPlugin: (options?: HtmlRspackPluginOptions) => HtmlRspackPlugin; } export type ConfigFactory = ( diff --git a/npm-packages/meteor-rspack/package-lock.json b/npm-packages/meteor-rspack/package-lock.json index 49dde4958a..ec29506dbe 100644 --- a/npm-packages/meteor-rspack/package-lock.json +++ b/npm-packages/meteor-rspack/package-lock.json @@ -1,12 +1,12 @@ { "name": "@meteorjs/rspack", - "version": "0.0.21", + "version": "0.0.22", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@meteorjs/rspack", - "version": "0.0.21", + "version": "0.0.22", "license": "ISC", "dependencies": { "ignore-loader": "^0.1.2", diff --git a/npm-packages/meteor-rspack/package.json b/npm-packages/meteor-rspack/package.json index 901d00bd95..080ead48b8 100644 --- a/npm-packages/meteor-rspack/package.json +++ b/npm-packages/meteor-rspack/package.json @@ -1,6 +1,6 @@ { "name": "@meteorjs/rspack", - "version": "0.0.21", + "version": "0.0.22", "description": "Configuration logic for using Rspack in Meteor projects", "main": "index.js", "type": "module", diff --git a/npm-packages/meteor-rspack/rspack.config.js b/npm-packages/meteor-rspack/rspack.config.js index 7f524a8ab9..1d72d0fe6e 100644 --- a/npm-packages/meteor-rspack/rspack.config.js +++ b/npm-packages/meteor-rspack/rspack.config.js @@ -161,6 +161,28 @@ export default function (inMeteor = {}, argv = {}) { const buildOutputDir = path.resolve(process.cwd(), buildContext, outputDir); Meteor.buildOutputDir = buildOutputDir; + // Add HtmlRspackPlugin function to Meteor + Meteor.HtmlRspackPlugin = (options = {}) => { + return new HtmlRspackPlugin({ + inject: false, + cache: true, + filename: `../${buildContext}/${outputDir}/index.html`, + templateContent: ` + + <% for tag in htmlRspackPlugin.tags.headTags { %> + <%= toHtml(tag) %> + <% } %> + + + <% for tag in htmlRspackPlugin.tags.bodyTags { %> + <%= toHtml(tag) %> + <% } %> + + `, + ...options + }); + }; + // Set watch options const watchOptions = { ...defaultWatchOptions, @@ -291,23 +313,7 @@ export default function (inMeteor = {}, argv = {}) { banner: bannerOutput, entryOnly: true, }), - new HtmlRspackPlugin({ - inject: false, - cache: true, - filename: `../${buildContext}/${outputDir}/index.html`, - templateContent: ` - - <% for tag in htmlRspackPlugin.tags.headTags { %> - <%= toHtml(tag) %> - <% } %> - - - <% for tag in htmlRspackPlugin.tags.bodyTags { %> - <%= toHtml(tag) %> - <% } %> - - `, - }), + // Meteor.HtmlRspackPlugin(), ], watchOptions, devtool: isDevEnvironment || isTest ? 'source-map' : 'hidden-source-map',