Есть ли способ включить поддержку синтаксиса ES6 / ES7 в vscode?

104

Изменить 3: Начиная с версии 0.4.0, синтаксис ES6 можно включить, добавив jsconfig.jsonв папку проекта файл со следующим содержимым:

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

Изменить 2: вы можете проголосовать за эту функцию голосом пользователя


Есть ли способ «включить» ES6 / ES7 в Visual Studio Code?

Скриншот

Редактировать 1

Пробовал предложение @sarvesh - переопределил javascript.validate.targetи перезапустил vscode. Не помогло.

Джереми Даньоу
источник
3
Не могли бы вы выразить это как ответ, а не отредактировать свой вопрос?
Jeroen Vannevel

Ответы:

29

В настоящее время единственный способ использовать функции ES6 и ES7 - использовать Typescript .

С другой стороны, здесь вы можете увидеть, что есть запрос функции для ES6 и ES7.

мздв
источник
1
Обновление: Looks ES6 будет доступен с июля 2015 г. - visualstudio.uservoice.com/forums/293070-visual-studio-code/…
ToddSmithSalter
Вроде неплохо. Но в целом есть над чем поработать.
мздв,
2
Я использую последнюю версию. 0.8.0Я все еще вижу ошибку при отображении жирных стрелок ... почему?
vanthome
@vanthome вам нужно указать массив файлов, который вы хотите записать с помощью es6, проверьте ссылку: code.visualstudio.com/Docs/languages/javascript
TlonXP
@TionXP ты про подход с jsconfig.json? Ну, я не пробовал это, но я ожидаю, что это сработает, если я включу его глобально. Я не хочу сообщать VSCode файл за файлом, что я хочу использовать ES6.
vanthome
59

Это довольно просто, в корне вашего проекта создайте файл jsconfig.json и запишите в него этот объект:

{
    "compilerOptions": {
        "target": "ES6",
        "module": "commonjs"
    }
}
Олив
источник
Отлично работает, спасибо! По-видимому, этим летом они включили это в vscode: blogs.msdn.com/b/vscode/archive/2015/07/06/vs-code-es6.aspx Так что ответ выше уже неверен .
Том
9
добавлено "experimentalDecorators": trueдля декораторов es7
Мейрион Хьюз
А как насчет импорта ES6? Будут ли работать точки отладки / останова? Вроде не работает "module": "es2015".
arve0
У меня это не работает, у меня проблема с этим парнем stackoverflow.com/questions/35110019/…
jack blank
45

Эта ссылка очень помогла. Добавление файла jsconfig.json в проект не очень помогло или, скорее, это не лучшее решение. Перейдите в файл> настройки> настройки. В файле settings.json добавьте эту строку:

"jshint.options": { "esversion": 6 }
ахола
источник
5

Добавляя к приведенным выше ответам ...

В соответствии с документами VS Code ..

Убедитесь, что вы разместили jsconfig.json в корне вашего проекта JavaScript, а не только в корне вашей рабочей области. Ниже приведен файл jsconfig.json, который определяет цель JavaScript как ES6, а атрибут exclude исключает папку node_modules.

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

Вот пример с явным атрибутом файлов.

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

Атрибут files нельзя использовать вместе с атрибутом exclude. Если указаны оба атрибута, приоритет имеет атрибут files.

также попробуйте отредактировать свойство "target" в 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"
  ]
}
Игнатий Андрей
источник
Что это означает: «в корне вашего проекта JavaScript, а не только в корне вашего рабочего пространства»?
Джаред Кристенсен,
Почему нельзя просто выбрать vs code и .babelrcт. Д.? Почему весь конфиг продублирован? grumbl
Stijn de Witt
1

В противном случае вы можете использовать ESLint, чтобы выделить ошибку ES7 (используя синтаксический анализатор babel или другие): VSCode Linter ES6 ES7 Babel linter

Дэмьен Леру
источник
0

По состоянию на эту дату и в соответствии с документами ESLint на VSCode Marketplace, включение файла конфигурации .eslintrc в корень проекта включает линтинг ES6 в расширении ESLint VSCode.

Мой файл конфигурации .eslintrc выглядит так:

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

У меня eslint установлен через npm в node_modules, и все, что я знаю, это то, что с .eslintrc в корневой папке проекта ES6 linting работает, а без него - нет.

Надеюсь это поможет...

ВанАльберт
источник