diff --git a/npm-packages/meteor-rspack/package-lock.json b/npm-packages/meteor-rspack/package-lock.json index 3b97ae5cff..3567fb9d38 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.29", + "version": "0.0.30", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@meteorjs/rspack", - "version": "0.0.29", + "version": "0.0.30", "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 b0b8749fce..2f3c158424 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.29", + "version": "0.0.30", "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 7a27c7f647..b533340b3a 100644 --- a/npm-packages/meteor-rspack/rspack.config.js +++ b/npm-packages/meteor-rspack/rspack.config.js @@ -98,6 +98,16 @@ function createCoffeescriptConfig({ swcConfig }) { }; } +// Keep files outside of build folders +function keepOutsideBuild() { + return (p) => { + const normalized = '/' + path.normalize(p).replaceAll(path.sep, '/').replace(/^\/+/, ''); + const isInBuildRoot = /\/_build(\/|$)/.test(normalized); + const isInBuildStar = /\/_build-[^/]+(\/|$)/.test(normalized); + return !(isInBuildRoot || isInBuildStar); // true => KEEP, false => DELETE + }; +} + // Watch options shared across both builds const defaultWatchOptions = { ignored: ['**/.meteor/local/**', '**/dist/**'], @@ -282,7 +292,7 @@ export default function (inMeteor = {}, argv = {}) { cssChunkFilename: `${assetsContext}/[id]${ isProd ? '.[contenthash]' : '' }.css`, - clean: isProd, + ...(isProd && { clean: { keep: keepOutsideBuild() } }), }, optimization: { usedExports: true, @@ -371,7 +381,7 @@ export default function (inMeteor = {}, argv = {}) { libraryTarget: 'commonjs', chunkFilename: `${bundlesContext}/[id]${isProd ? '.[chunkhash]' : ''}.js`, assetModuleFilename: `${assetsContext}/[hash][ext][query]`, - clean: isProd, + ...(isProd && { clean: { keep: keepOutsideBuild() } }), }, optimization: { usedExports: true }, module: { diff --git a/packages/rspack/lib/constants.js b/packages/rspack/lib/constants.js index 370041abc4..c114998788 100644 --- a/packages/rspack/lib/constants.js +++ b/packages/rspack/lib/constants.js @@ -5,7 +5,7 @@ export const DEFAULT_RSPACK_VERSION = '1.4.8'; -export const DEFAULT_METEOR_RSPACK_VERSION = '0.0.29'; +export const DEFAULT_METEOR_RSPACK_VERSION = '0.0.30'; export const DEFAULT_METEOR_RSPACK_REACT_HMR_VERSION = '1.4.3';