Czy istnieje sposób, aby włączyć obsługę składni ES6 / ES7 w Vscode?

103

Edycja 3: Począwszy od wersji 0.4.0, składnię ES6 można włączyć, dodając jsconfig.jsondo folderu projektu plik o następującej zawartości:

{
    "compilerOptions": {
        "target": "ES6"
    }
}

Edycja 2: Możesz głosować na tę funkcję głosem użytkownika


Czy istnieje sposób na „włączenie” ES6 / ES7 w programie Visual Studio Code?

zrzut ekranu

Edytuj 1

Wypróbowano sugestię @ sarvesh - zastąpiono javascript.validate.targeti ponownie uruchomiono vscode. Nie pomogło.

Jeremy Danyow
źródło
3
Czy mógłbyś podać to jako odpowiedź, a nie poprawkę w swoim pytaniu?
Jeroen Vannevel

Odpowiedzi:

28

Obecnie jedynym sposobem korzystania z funkcji ES6 i ES7 jest użycie Typescript .

Z drugiej strony tutaj widać, że istnieje żądanie funkcji dla ES6 i ES7

mzdv
źródło
1
Aktualizacja: Looks ES6 będzie dostępny od lipca 2015 r. - visualstudio.uservoice.com/forums/293070-visual-studio-code/…
ToddSmithSalter
Wydaje się całkiem nieźle. Jednak ogólnie rzecz biorąc, jest jeszcze dużo do zrobienia.
mzdv
2
Używam najnowszej wersji. 0.8.0Nadal widzę błąd kolorowania funkcji grubych strzałek ... dlaczego?
vanthome
@vanthome musisz wskazać tablicę plików, którą chcesz pisać za pomocą es6, sprawdź link: code.visualstudio.com/Docs/languages/javascript
TlonXP
@TionXP masz na myśli podejście jsconfig.json? Cóż, nie próbowałem tego, ale spodziewam się, że zadziała, jeśli włączę to globalnie. Nie chcę mówić plik po pliku VSCode, że chcę używać ES6.
vanthome
58

To całkiem proste, w katalogu głównym projektu utwórz plik jsconfig.json i zapisz w nim ten obiekt:

{
    "compilerOptions": {
        "target": "ES6",
        "module": "commonjs"
    }
}
Oliv
źródło
Działa świetnie, dzięki! Najwyraźniej umieścili to w vscode tego lata: blogs.msdn.com/b/vscode/archive/2015/07/06/vs-code-es6.aspx Zatem powyższa odpowiedź nie jest już poprawna.
Tom
9
dodaj "experimentalDecorators": truedla dekoratorów es7
Meirion Hughes
A co z importem ES6? Czy punkty debugowania / przerwania będą działać? Wydaje się, że nie działa "module": "es2015".
arve0
To nie działa dla mnie. Mam tego faceta problem stackoverflow.com/questions/35110019/…
pusty jack
43

Ten link bardzo pomógł. Dodanie pliku jsconfig.json do projektu niewiele pomogło lub raczej nie jest najlepszym rozwiązaniem. Przejdź do pliku> preferencje> ustawienia. W pliku settings.json dodaj tę linię:

"jshint.options": { "esversion": 6 }
achola
źródło
5

Dodawanie do powyższych odpowiedzi ...

Zgodnie z Docs of VS Code.

Upewnij się, że plik jsconfig.json jest umieszczony w katalogu głównym projektu JavaScript, a nie tylko w katalogu głównym obszaru roboczego. Poniżej znajduje się plik jsconfig.json, który definiuje cel JavaScript jako ES6, a atrybut exclude wyklucza folder node_modules.

{
    "compilerOptions": {
        "target": "ES6"
    },
    "exclude": [
        "node_modules"
    ]
}

Oto przykład z jawnym atrybutem plików.

{
    "compilerOptions": {
        "target": "ES6"
    },
    "files": [
        "src/app.js"
    ]
}

Atrybut files nie może być używany w połączeniu z atrybutem exclude. Jeśli określono oba, pierwszeństwo ma atrybut files.

spróbuj także edytować właściwość „target” w tsconfig.json

{
  "compilerOptions": {
    "target": "es5",//es6
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "exclude": [
    "node_modules",
    "typings/main",
    "typings/main.d.ts"
  ]
}
Ignacy Andrzej
źródło
Co to oznacza: „w katalogu głównym projektu JavaScript, a nie tylko w katalogu głównym obszaru roboczego”?
Jared Christensen
Dlaczego nie można po prostu odebrać vs kodu .babelrc? Po co ta cała zduplikowana konfiguracja? grumbl
Stijn de Witt
0

Od tego dnia i zgodnie z dokumentacją ESLint na VSCode Marketplace, w tym plik konfiguracyjny .eslintrc w katalogu głównym projektu, umożliwia linting ES6 w rozszerzeniu ESLint VSCode.

Mój plik konfiguracyjny .eslintrc wygląda następująco:

extends:
  - standard
parser: babel-eslint
rules:
  object-curly-spacing: [ error, always ]
  react/prop-types: off
  space-before-function-paren: off

Mam zainstalowany eslint przez npm w node_modules i wiem tylko, że z .eslintrc w folderze głównym projektu ES6 działa linting i bez niego nie.

Mam nadzieję że to pomoże...

VanAlbert
źródło