Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

[heft-sass-plugin] Incremental cache file name depends on the machine (absolute build folder, core count)

Ouverte Adaptée aux débutants
#6,126 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
68/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
sass, typescript
Domaine
build-system

Piste de recherche

Le nom du fichier de cache est calculé dans SassProcessor.loadCacheAsync à partir de JSON.stringify(this.#options), et les options sont assemblées dans SassPlugin. Vérifie quels champs sont des chemins absolus ou concurrency, puis soit tu les rends relatifs à buildFolder avant le hachage, soit tu passes à un nom de fichier fixe avec le hachage stocké à l'intérieur. C'est terminé lorsque deux builds dans des dossiers de checkout différents ou avec un nombre de cœurs différent produisent la même liste de temp/build/sass et que le cache est toujours invalidé lors de véritables changements d'options.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

🤖 Filed by GitHub Copilot acting for @namankanakiya (light review only).

Package: @rushstack/heft-sass-plugin 1.5.1 (with @rushstack/heft 1.3.3), Linux.

Summary: the plugin's incremental cache file name depends on the machine (the absolute build folder and the core count), so identical builds on different machines or in different checkout folders produce different output folder listings.

Source: SassProcessor.loadCacheAsync computes

configHash = getContentsHash('sass.json', JSON.stringify(this.#options)).slice(0, 8)

and writes temp/build/sass/sass_<configHash>.json. The options come from SassPlugin and include:

  • buildFolder (absolute),
  • srcFolder, dtsOutputFolders, cssOutputFolders, loadPaths (resolved to absolute paths),
  • concurrency = heftConfiguration.numberOfCores (os.availableParallelism()).

Repro: build the same project twice, once normally and once with taskset -c 0-7 (or from a different checkout folder). temp/build/sass contains sass_9nUQkQ8d.json in one build and sass_DDgrCciE.json in the other.

Observed: identical inputs give different output listings. Build-cache entries produced on different machines (for example CI vs a developer box) differ, and tools that compare or hash output folder listings see a change where there is none, which can trigger needless downstream rebuilds.

Expected: the file name depends only on options that affect the output.

Suggested fix (either):

  1. Hash the options with folders made relative to buildFolder and without concurrency (and any other non-semantic fields), or
  2. Use a fixed file name (for example temp/build/sass/sass.json) and store the options hash inside the file, invalidating the cache when it does not match.

Happy to test a candidate fix.

Langage dominant
TypeScript
Étoiles
6.5k
Forks
710
Merge moyen
1 j 14 h
PR mergées (30 j)
43

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

  • Aucun Dockerfile ni fichier Docker Compose
  • Propose un modèle de pull request
  • Aucun guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de microsoft/rushstack

Toutes les issues de microsoft/rushstack

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.