ensure env packages dirs are also part of the meteor bundler

This commit is contained in:
Nacho Codoñer
2025-09-01 17:33:01 +02:00
parent 6b6d7b94ea
commit 4531fc35f4
2 changed files with 28 additions and 1 deletions

View File

@@ -20,6 +20,7 @@ const {
isMeteorBlazeProject,
isMeteorLessProject,
isMeteorScssProject,
getMeteorEnvPackageDirs,
} = require('meteor/tools-core/lib/meteor');
import { getInitialEntrypoints } from './build-context';
@@ -107,11 +108,21 @@ export function configureMeteorForRspack() {
dir => !includedDirs.includes(dir),
);
const envPackageDirs = getMeteorEnvPackageDirs().map(
dir => path.normalize(dir)?.split(path.sep)?.filter(Boolean)?.[0],
);
let extraFoldersToIgnore = [
...ignoredDirs
.filter(
dir =>
!['public', 'private', '.meteor', 'packages', RSPACK_BUILD_CONTEXT].includes(dir),
![
'public',
'private',
'.meteor',
'packages',
...envPackageDirs,
RSPACK_BUILD_CONTEXT,
].includes(dir),
)
.map(dir => `${dir}/**`),
];

View File

@@ -411,3 +411,19 @@ export function isMeteorBundleVisualizerProject() {
export function isMeteorPackagesTest() {
return Package?.meteor?.global?.currentCommand?.name === 'test-packages';
}
/**
* Gets the package directories from the environment variables.
* @returns {string[]}
*/
export function getMeteorEnvPackageDirs() {
function packageDirsFromEnvVar(envVar, delimiter = path.delimiter) {
return process.env[envVar] && process.env[envVar].split(delimiter) || [];
}
return [
// METEOR_PACKAGE_DIRS should use the arch-specific delimiter
...(packageDirsFromEnvVar('METEOR_PACKAGE_DIRS', path.delimiter || ':')),
// PACKAGE_DIRS (deprecated) always used ':' separator (yes, even Windows)
...(packageDirsFromEnvVar('PACKAGE_DIRS', ':')),
];
}