ซ่อนไฟล์. js.map ใน Visual Studio Code


320

ฉันกำลังทำงานกับโปรเจ็กต์ typescript ในรหัส Visual Studio และต้องการซ่อนไฟล์.js.map(และอาจเป็น.js) ไฟล์ไม่ให้ปรากฏใน file explorer

เป็นไปได้หรือไม่ที่จะแสดงเฉพาะ.tsไฟล์ใน file explorer?

คำตอบ:


641

ในการตั้งค่าของคุณ (ผู้ใช้หรือพื้นที่ทำงาน) มีการตั้งค่าที่คุณสามารถปรับแต่งเพื่อซ่อนสิ่งที่คุณต้องการ:

{
    "files.exclude": {
        "**/.git": true,
        "**/.DS_Store": true
    }
}

ดังนั้นคุณสามารถเพิ่มต่อไปนี้เพื่อซ่อน.jsและ.js.mapไฟล์

"**/*.js": true,
"**/*.js.map": true

ตามที่คำตอบอื่น ๆ นี้อธิบายคนส่วนใหญ่อาจต้องการซ่อน.jsไฟล์เมื่อมี.tsไฟล์ที่ตรงกันเท่านั้น

ดังนั้นแทนที่จะทำ:

"**/*.js": true

คุณอาจต้องการทำ:

"**/*.js": {"when": "$(basename).ts"}

10
โซลูชั่นที่สมบูรณ์แบบ เพื่อเพิ่มในฉันสงสัยว่าผู้ใช้หลายคนที่สนใจในเรื่องนี้จะมีความสนใจในการซ่อนไดเรกทอรี node_modules สามารถทำได้ดังนี้:"**/node_modules/": true
Josh1billion

มีทางลัดในการยกเลิก / เปิดใช้งานตัวเลือกการกำหนดค่า files.exclude หรือไม่ บางครั้งฉันต้องการตรวจสอบสิ่งที่ซ่อนอยู่
aaalsubaie

103
"**/*.js": {"when": "$(basename).ts"},"**/*.map": {"when": "$(basename).map"}
iuristona

1
@aaalsubaie การเปิด / ปิดไฟล์ยกเว้นกรองมีเป็นส่วนขยายที่มีอยู่ในตลาดที่marketplace.visualstudio.com/items?itemName=nwallace.peep
AJ Qarshi

2
เป็น"**/*.map": {"when": "$(basename).map"}เช่นเดียวกับ"**/*.map": true?
gdbj

190

ฉันพบสิ่งนี้หากคุณมีไฟล์ JS มาตรฐานแล้วสิ่งเหล่านี้จะถูกซ่อนด้วยซึ่งอาจไม่ใช่สิ่งที่คุณต้องการ อาจเป็นการดีกว่าเนื่องจากซ่อนเฉพาะไฟล์ JS ที่ตรงกับไฟล์ TS ...

{
    "files.exclude": {
        "**/.git": true,
        "**/.DS_Store": true,
        "**/*.js.map": true,
        "**/*.js": {"when": "$(basename).ts"}
    }
}

5
คุณสามารถโพสต์ลิงค์ไปยังที่นี้เป็นเอกสารได้หรือไม่? ฉันต้องการใช้รูปแบบที่ซับซ้อนมากขึ้นของ "เมื่อ" แต่ไม่สามารถหาที่ที่เอกสารได้
masimplo

1
ไฟล์ JS ที่ได้รับการซ่อนไว้มีการบันทึกไว้ที่นี่: code.visualstudio.com/docs/language/…
Stuart Hallows

4
คุณทำรูปแบบการจับคู่แบบ "เมื่อ" สำหรับไฟล์. js.map หรือ ".min.css" หลังจากรวบรวมและลดขนาด scss อย่างไร พวกเขาไม่ได้รับการจับคู่โดย $ (basename)
nickspoon

นี่เป็นสิ่งที่ฉลาด แต่ไม่สามารถใช้งานได้กับบางสิ่งอย่างเช่น angular 2 ทุกอย่างมีชื่อเป็น file.component.ts หรือ file.module.ts
BentOnCoding

แล้วไฟล์ ts ในโฟลเดอร์อื่นล่ะ?
Th3B0Y

98

ฉันไม่รู้จริงๆว่ามันใช้งานอย่างไร แต่สำหรับการซ่อน.jsไฟล์ทำงาน:

"**/*.js": {"when": "$(basename).ts"}

สำหรับการซ่อน.js.mapไฟล์ทำงาน:

"**/*.js.map": {"when": "$(basename)"}

6
การแก้ปัญหานี้ยังจับ.js.mapเป็น Visual Studio รหัสดูเหมือนว่าจะตีความ$(basename)ให้เป็นทุกอย่างก่อนที่.สุดท้าย สามารถทำให้เป็นเรื่องง่าย"**/*.map: {"when": "$(basename)"}แต่สิ่งนี้จะแยกไฟล์ใด ๆ .mapที่มี.mapไฟล์ที่ไม่สอดคล้องกัน
Njål Nordmark

44

เมื่อคุณทำงานกับ TypeScript บ่อยครั้งที่คุณไม่ต้องการเห็นไฟล์ JavaScript ที่สร้างขึ้นใน explorer หรือในผลการค้นหา รหัส VS มีความสามารถในการกรองพร้อมการfiles.excludeตั้งค่า ( ไฟล์> การกำหนดค่าตามความชอบ>การตั้งค่าพื้นที่ทำงาน ) และคุณสามารถสร้างนิพจน์เพื่อซ่อนไฟล์ที่ได้รับ:

"**/*.js": { "when": "$(basename).ts"}

ซ่อน.mapไฟล์ที่สร้างโดย:

 "**/*.js.map": { "when": "$(basename)"}

ดังนั้นคุณจะมีการกำหนดค่าเหมือนใน:

settings.json

// Place your settings in this file to overwrite default and user settings.
{
    "files.exclude": {
        "**/*.js": { "when": "$(basename).ts"},
        "**/*.js.map": { "when": "$(basename)"}
    }
}

ลิงก์: https://code.visualstudio.com/docs/languages/typescript#_hiding-derived-javascript-files


22

John Papa Twitter LINKบอกว่าใช้สิ่งต่อไปนี้:

"files.exclude": {
        "**/.git": true,
        "**/.DS_Store": true,
        "**/*.js" : {
            "when": "$(basename).ts"
        },
        "**/*.js.map": {
            "when": "$(basename)"
        }
}

15

จากเอกสารทางการ :

หากต้องการยกเว้นไฟล์ JavaScript ที่สร้างจากไฟล์ต้นฉบับ. ts และ. tsx ให้ใช้นิพจน์นี้:

"**/*.js": { "when": "$(basename).ts" },
"**/**.js": { "when": "$(basename).tsx" }

นี่เป็นเคล็ดลับเล็กน้อย รูปแบบ glob ค้นหาถูกใช้เป็นกุญแจสำคัญ การตั้งค่าด้านบนใช้รูปแบบ glob สองแบบเพื่อจัดหาคีย์เฉพาะสองปุ่ม แต่การค้นหาจะยังคงตรงกับไฟล์เดียวกัน

UPDATE 10/3/2560:ด้วยเคล็ดลับนี้เรามีปัญหากับ "ค้นหาในโฟลเดอร์" โปรดดูปัญหา


1
มีวิธีแก้ไขอื่นสำหรับเรื่องนี้ ฉันโพสต์ไว้เป็นคำตอบด้านล่าง
Zach Posten

8

1. ไปที่การตั้งค่า> การตั้งค่า

ป้อนคำอธิบายรูปภาพที่นี่

2. คลิกที่ "แก้ไขใน settings.json" (อยู่ที่ด้านล่างของภาพ)

ป้อนคำอธิบายรูปภาพที่นี่

3. อัปเดตวัตถุ json ตามที่คุณเห็นในภาพ จากนั้นบันทึกการเปลี่ยนแปลงของคุณCtrl + Sและนั่นคือทั้งหมด

"files.exclude": {
    "**/*.js": {"when": "$(basename).ts"}
}

ป้อนคำอธิบายรูปภาพที่นี่


6

เพิ่มการตั้งค่าเหล่านี้ในsettings.jsonในโฟลเดอร์. vscodeของคุณ

// Place your settings in this file to overwrite default and user settings.
{
    "files.exclude" :{
    "**/.git":true,
    "**/.DS_Store":true,
    "**/*.map":true,
    "**/app/**/*.js":true

    }
}

หาก settings.json ไม่พร้อมใช้งานให้คลิกที่ไฟล์---> การตั้งค่า->การตั้งค่าพื้นที่ทำงาน


ไฟล์นี้อยู่ที่ไหน -> การตั้งค่า -> การตั้งค่าพื้นที่ทำงาน? เมื่อฉันไปที่ไฟล์ฉันไม่มีอะไรเกี่ยวข้องกับค่ากำหนดและพื้นที่ทำงานดังนั้นฉันจึงต้องอยู่ผิดที่ สำหรับข้อมูลของคุณฉันใช้ Visual Studio 2017 Enterprise
MHOOS

5

โปรดเพิ่มบรรทัดต่อไปนี้ในแผง "การตั้งค่าผู้ใช้" เพื่อแทนที่ "การตั้งค่าเริ่มต้น" คุณสามารถซ่อนไฟล์ {basename} .js และ {basename} .js.map เมื่อคุณสร้างไฟล์เป็น {basename} .ts

"files.exclude": {
        "**/*.js": {
            "when": "$(basename).ts"
        },
        "**/*.js.map": {
            "when": "$(basename)"
        }        
    }

อันนี้ใช้ได้สำหรับฉันสำหรับไฟล์ sourcemap ขอบคุณ @mutlugokhan Sagolasin
Seregwethrin

4

อาจเป็นการดีกว่าที่จะซ่อน.mapและ.jsไฟล์เมื่อตรงกับ.tsไฟล์ที่เกี่ยวข้อง
คุณสามารถทำได้โดยการคัดลอกบรรทัดต่อไปนี้ในการตั้งค่าผู้ใช้ VS (การตั้งค่า> การตั้งค่าผู้ใช้):

// Workspace settings
"files.exclude": {
        "**/*.js":  {"when": "$(basename).ts"},
        "**/*.map": true
 }

วิธีนี้จะซ่อนไฟล์ทั้งหมดที่มีชื่อลงท้าย.mapด้วย
Roy Tinker

3

ในรหัส VS ให้ไปที่รหัส (หรือไฟล์สำหรับผู้ใช้ Windows)> การตั้งค่า> การตั้งค่าพื้นที่ทำงานและเพิ่มข้อมูลโค้ดนี้:

{
   "files.exclude": {
      "**/*.js": {"when": "$(basename).ts"},
      "**/*.map": {"when": "$(basename).map"}
   }
}

0

ยังไม่มีวิธีแก้ปัญหาอย่างเป็นทางการสำหรับการแยกไฟล์ glob ตามเงื่อนไขสองประการ ดูปัญหานี้

มีวิธีแก้ปัญหาคือการกำหนดรูปแบบ glob สองแบบที่กำหนดเป้าหมายไฟล์เดียวกัน:

{
    "files.exclude": {
        "**/*.js": { "when": "$(basename).ts"},
        "**/*?.js": { "when": "$(basename).tsx"}
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.