microsoft / microsoft/TypeScript
Support automatically updating URL import references when using `new URL(<file>, import.meta.url)`
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
Bug Report
🔎 Search Terms
import.meta.url
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about 4.3.0
⏯ Playground Link
💻 Code
Given the following files:
folder/file1.ts
console.log('file1');
export const foo = 42;
different-folder/file2.ts
new URL('../folder/file1.js', import.meta.url);
import('../folder/file1.js');
export const bar = 5;
- Create a new directory
sub-folder/in root - Move
different-folder/intosub-folder/so that the layout becomessub-folder/different-folder/file2.ts - When prompted for "Update imports for 'different-folder'?" click "Yes"
🙁 Actual behavior
sub-folder/different-folder/file2.ts
new URL('../folder/file1.js', import.meta.url);
import('../../folder/file1.js');
export const bar = 5;
The same is true if folder/file1.js is moved to a different location.
🙂 Expected behavior
Similar to the dynamic import, a file reference based on import.meta.url that points to a different TypeScript file should correctly be renamed accordingly.
sub-folder/different-folder/file2.ts
new URL('../../folder/file1.js', import.meta.url);
import('../../folder/file1.js');
export const bar = 5;
VS Code supports the standard dynamic import to handle file renaming. Since import.meta.url and URL are a standard way of resolving files, I would expect VS Code to natively support it as well. For example, Parcel compatibility is implemented in https://github.com/parcel-bundler/parcel/issues/5473, is implemented in Webpack 5 https://github.com/webpack/webpack/pull/11075 and is scheduled for implementation in ESBuild https://github.com/evanw/esbuild/issues/312#issuecomment-800730525
This issue was originally filed at https://github.com/microsoft/vscode/issues/121391
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par la reproduction Workbench liée en utilisant new URL(<file>, import.meta.url) et comparez-la au comportement de mise à jour des imports dynamiques décrit dans le rapport. Suivez le chemin de renommage des imports de VS Code qui gère l’opération de déplacement. C’est terminé lorsque le déplacement de l’un ou l’autre des fichiers référencés met à jour la référence d’URL relative vers la même cible, comme pour les imports dynamiques.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript, vscode
- Domaine
- developer-experience, tooling
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100