Как исключить package.json из автоматической сортировки в VSCode?

Я использую VSCode для проекта Node.js и настроил свой редактор на автоматическую сортировку файлов JSON при сохранении, используя следующий параметр в моем settings.json:

"editor.codeActionsOnSave": {
    "source.sort.json": "always"
}

Я хочу исключить автоматическую сортировку package.json при сохранении, сохранив при этом функцию auto-sort для других файлов JSON в моем проекте. Есть ли способ специально исключить package.json из правила editor.codeActionsOnSave или какой-либо другой обходной путь, который позволил бы мне добиться такого поведения?

Я заглянул в VSCode documentation и попытался найти похожие проблемы, но не смог найти прямого решения. Любые предложения или альтернативные подходы приветствуются.

Вы используете для этого расширение?

evolutionxbox 04.04.2024 16:38
"editor.defaultFormatter": "esbenp.prettier-vscode"
Webia1 04.04.2024 17:23
stackoverflow.com/questions/63084731/…
Shahid Roofi Khan 13.04.2024 22:11
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
3
184
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, я нашел наполовину приличный способ интеграции без взлома.

  1. Сначала удалите общую настройку «автосортировка» из вашего settings.json, чтобы она не применялась глобально ко всем файлам. Вот что вам следует удалить:
"editor.codeActionsOnSave": {
    "source.sort.json": "always"
}
  1. Затем повторно примените настройку специально для файлов JSON (установите Prettier в качестве средства форматирования по умолчанию):
"[json]": {
  "editor.codeActionsOnSave": {
    "source.sort.json": "always"
  },
  "editor.defaultFormatter": "esbenp.prettier-vscode"
},
  1. Классифицируйте package.json как jsonc (JSON с комментариями), на который не распространяется настройка автосортировки. Добавьте это в свой settings.json:
"files.associations": {
  "package.json": "jsonc"
}
  1. Наконец, установите форматировщик по умолчанию для файлов JSONC и деактивируйте auto-sort:
"[jsonc]": {
  "editor.codeActionsOnSave": {
    "source.sort.json": "never"
  },
  "editor.defaultFormatter": "esbenp.prettier-vscode"
},

Пока разработчиками VSCode не будет реализовано более удобное решение, вы можете использовать это решение здесь.

Каждый JSON будет отсортирован, а каждый JSONC — нет. Вы можете расширить этот список ниже:

"files.associations": {
  "package.json": "jsonc", 
  "settings.json": "json"
}

При такой настройке функция автосортировки package.json остаётся нетронутой, в то время как файлы типа settings.json продолжают сортироваться. Это различие зависит от расширения файла — json для сортировки, jsonc для отсутствия сортировки.

Обратите внимание на последнюю букву c

Другой пример

  "files.associations": {
    "de.json": "json",  // sort
    "en.json": "json",  // sort
    "fr.json": "json",  // sort
    "nx.json": "jsonc", // do not sort
    "package.json": "jsonc", // do not sort
    "project.json": "jsonc", // do not sort
    "settings.json": "json", // sort
    "tsconfig.app.json": "jsonc", // do not sort
    "tsconfig.base.json": "jsonc", // do not sort
    "tsconfig.e2e.json": "jsonc", // do not sort
    "tsconfig.editor.json": "jsonc", // do not sort
    "tsconfig.json": "jsonc", // do not sort
    "tsconfig.lib.json": "jsonc", // do not sort
    "tsconfig.spec.json": "jsonc" // do not sort
  },

Другие вопросы по теме