Có cách nào để loại bỏ nhập khẩu và khai báo không sử dụng khỏi Angular 2+ không?


139

Tôi được chỉ định lấy một số mã sai từ các nhà phát triển khác đã rời khỏi công ty gần đây.

Tôi tò mò hỏi liệu có một số bổ trợ của Visual Studio Code hoặc các phương tiện khác có thể giúp chúng tôi dọn dẹp và sắp xếp việc nhập và tham chiếu nhanh chóng và hiệu quả không?

Ví dụ, có thể có hàng trăm hàng nhập khẩu như thế này

import { AutoCompleteModule,InputSwitchModule } from 'primeng/primeng';
import { ListboxModule } from 'primeng/primeng';

có thể được chuyển đổi tương tự

import { AutoCompleteModule,
         InputSwitchModule,
         ListboxModule  } from 'primeng/primeng';

Hoặc các chức năng khác như tự động xóa những nhập khẩu và khai báo không sử dụng khỏi app.module hoặc từ tất cả các thành phần trong toàn bộ dự án?

Cảm ơn cho bất kỳ thông tin phản hồi!


Tôi cũng tự hỏi nếu nhập ngoại lai vào các thành phần cụ thể là một kéo theo hiệu suất.
Marcidius

8
stackoverflow.com/a/49697144/3914072 vscode 1.22 Shift + Alt + O - hoạt động với tôi!
Rajab Shakirov

Cũng có thể được thực hiện từ dòng lệnh (hoặc git hook): npmjs.com/package/organize-imports-cli
thorn̈

Câu trả lời:


167

Chỉnh sửa (như được đề xuất trong nhận xét và người khác), Visual Studio Code đã phát triển và cung cấp chức năng này được xây dựng dưới dạng lệnh "Sắp xếp nhập", với các phím tắt mặc định sau :

option+ Shift+ Ocho máy Mac

Alt + Shift + Ocho Windows


Câu trả lời gốc:

Tôi hy vọng phần mở rộng mã phòng thu trực quan này sẽ đáp ứng nhu cầu của bạn: https://marketplace.visualstudio.com/items?itemName=rbbit.typescript-hero

Nó cung cấp các tính năng sau:

  • Thêm nhập khẩu dự án hoặc thư viện của bạn vào tệp hiện tại của bạn
  • Thêm một nhập cho tên hiện tại dưới con trỏ
  • Thêm tất cả các lần nhập bị thiếu của một tệp bằng một lệnh
  • Intellisense gợi ý các ký hiệu và tự động thêm "Nhập tính năng bóng đèn" cần thiết để sửa mã bạn đã viết
  • Sắp xếp và sắp xếp nhập hàng của bạn (sắp xếp và loại bỏ không sử dụng )
  • Chế độ xem phác thảo mã của tài liệu TS / TSX mở của bạn
  • Tất cả các công cụ tuyệt vời cho JavaScript là tốt! (giai đoạn thử nghiệm, mô tả tốt hơn dưới đây.)

Đối với máy Mac: control+ option+o

Để giành chiến thắng: Ctrl+ Alt+o


1
Cảm ơn đã bật tôi lên tiện ích này, nó rung chuyển! Cho đến khi tôi mới cài đặt, tôi đã từng cài đặt tiện ích mở rộng Tự động nhập để chăm sóc phần chức năng nhỏ đó (tự động nhập). Nhưng sau khi cài đặt TypeScript Hero ... wow, nó sẽ làm mọi thứ tôi cần, bao gồm sắp xếp các phụ thuộc theo thứ tự bảng chữ cái trong chính các câu lệnh nhập, loại bỏ các nhập không được sử dụng trong các lớp thành phần, v.v!
Marcidius

2
Vào năm 2018, người duy trì dự án của TS Hero đã nói rằng ông sẽ ngừng gia hạn, vì nó đã trở nên lỗi thời sau khi triển khai các chức năng chính trực tiếp trong Mã VS (xem các tài liệu khác).
mattarau

2
Bất kỳ cách nào để gọi Alt+Shift+Omà không sắp xếp lại hàng nhập khẩu?
XCS

Alt + Shift + O cho Linux cũng vậy
manuman94

155

Kể từ phiên bản Visual Studio Code 1.22, bản này miễn phí mà không cần gia hạn.

Shift+ Alt+O sẽ chăm sóc bạn.


1
Đẹp! Tôi đã sử dụng ctrl + shift + - từ mãi mãi và bây giờ tôi có thể tìm và thay đổi phím tắt.
GeorgiG

Tôi đã phải cài đặt nó, tôi đã không cài đặt 1.37.1
thầy tu

57

Nếu bạn là người dùng phòng thu hình ảnh nặng, bạn chỉ cần mở cài đặt tùy chọn của mình và thêm phần sau vào settings.json:

...
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
  "source.organizeImports": true
}
....

Hy vọng điều này có thể hữu ích!


3
Điều này dường như mâu thuẫn với plugin ESLint Prettier. Nó đang cố gắng thực hiện nhập khẩu một dòng nhưng ESLint đang cố gắng phá vỡ nhiều dòng.
Richard

Vấn đề tương tự như @Richard. Có vẻ là một vấn đề mở - github.com/prettier/prettier-vscode/issues/716
Craig

Có cách nào để vô hiệu hóa việc loại bỏ hàng nhập khẩu không sử dụng trong khi vẫn sắp xếp hàng nhập khẩu không?
sunknudsen

câu trả lời chính xác. đã tìm kiếm điều này từ lâu
Aamir Afridi

41

Để có thể phát hiện nhập, mã hoặc biến không sử dụng, hãy đảm bảo bạn có các tùy chọn này trong tệp tsconfig.json

"compilerOptions": {
    "noUnusedLocals": true,
    "noUnusedParameters": true
}

đã cài đặt trình biên dịch bản thảo, nếu không cài đặt nó với:

npm install -g typescript

và tiện ích mở rộng tslint được cài đặt trong Vcode, điều này hoạt động với tôi, nhưng sau khi kích hoạt tôi nhận thấy lượng sử dụng CPU tăng lên, đặc biệt là trong các dự án lớn.

Tôi cũng sẽ đề nghị sử dụng phần mở rộng anh hùng bản thảo để tổ chức nhập khẩu của bạn.


41

Vì VSCode v.1.24 và TypeScript v.2.9:

Đối với máy Mac: option+ Shift+O

Để giành chiến thắng: Alt+ Shift+O


7
quan trọng hơn đối với một số người, lệnh này là Organize Importshoặceditor.action.organizeImports
pcnate

@pcnate Có cách nào để vô hiệu hóa loại bỏ nhập khẩu không sử dụng trong khi vẫn giữ sắp xếp nhập khẩu không?
sunknudsen

11

Đã có rất nhiều câu trả lời tốt về chủ đề này! Tôi sẽ đăng bài này để giúp bất cứ ai cố gắng làm điều này tự động ! Để tự động loại bỏ nhập khẩu không sử dụng cho toàn bộ dự án, bài viết này thực sự hữu ích với tôi.

Trong bài viết tác giả giải thích nó như thế này:

Tạo một tệp tslint độc lập có các tệp sau:

{
  "extends": ["tslint-etc"],
  "rules": {
    "no-unused-declaration": true
  }
}

Sau đó chạy lệnh sau để sửa lỗi nhập:

 tslint --config tslint-imports.json --fix --project .

Xem xét sửa chữa bất kỳ lỗi nào khác mà nó ném. (Tôi đã làm)

Sau đó kiểm tra dự án hoạt động bằng cách xây dựng nó:

ng build

hoặc là

ng build name_of_project --configuration=production 

Kết thúc: Nếu nó được xây dựng chính xác, bạn đã tự động xóa thành công nhập khẩu!

LƯU Ý: Điều này chỉ loại bỏ nhập khẩu không cần thiết. Nó không cung cấp các tính năng khác mà VS Code thực hiện khi sử dụng một trong các lệnh được đề cập trước đó.


Tôi hiểu Could not find implementations for the following rules specified in the configuration: no-unused-declaration , vì vậy tôi đoán giải pháp này không còn hiệu quả nữa.
Yousuf Khan

Tôi đang sử dụng phiên bản tslint5.20.1
Yousuf Khan

0

đi đến của bạn tslint.jsonvà thay đổi giá trị của tài sản no-unused-variableđểfalse


3
Điều này hoàn toàn ngược lại với những gì OP yêu cầu. Anh ấy / anh ấy muốn KHÔNG có các biến không sử dụng no-unused-variablenên phải đúng. Điều được hỏi là nếu việc sửa chữa (loại bỏ các biến không sử dụng) có thể được thực hiện tự động, điều này đã được trả lời.
mattarau
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.