Support automatically updating URL import references when using `new URL(<file>, import.meta.url)`

Đang mở
#43,759 3 bình luận 3 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
typescript, vscode

Hướng nghiên cứu

Bắt đầu với bản tái hiện Workbench được liên kết bằng new URL(<file>, import.meta.url) và so sánh nó với hành vi cập nhật dynamic-import hiện có được mô tả trong báo cáo. Theo dõi đường dẫn đổi tên import của VS Code xử lý thao tác di chuyển. Hoàn tất có nghĩa là khi di chuyển một trong hai tệp được tham chiếu, tham chiếu URL tương đối được cập nhật đến cùng một đích, giống như các dynamic import.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Experience Enhancement Help Wanted Suggestion

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

Workbench repo

💻 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;
  1. Create a new directory sub-folder/ in root
  2. Move different-folder/ into sub-folder/ so that the layout becomes sub-folder/different-folder/file2.ts
  3. 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

Ngôn ngữ chính
Go
Star
111k
Fork
14.4k
Merge trung bình
1 ngày 19 giờ
Pull request đã merge (30 ngày)
117

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của microsoft/TypeScript

Tất cả issue của microsoft/TypeScript

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.