Как настроить код Visual Studio для компиляции файлов машинописи при сохранении?
Я вижу, что можно настроить задачу для создания файла в фокусе, используя в ${file}
качестве аргумента. Но я бы хотел, чтобы это было сделано при сохранении файла.
typescript
visual-studio-code
Пауэлл Квиринг
источник
источник
tsc <filename> --watch
в терминалеОтветы:
Май 2018 обновление:
По состоянию на май 2018 года вам больше не нужно создавать
tsconfig.json
вручную или настраивать бегунок задач.tsc --init
в папке вашего проекта, чтобы создатьtsconfig.json
файл (если у вас его еще нет).tsc: watch - tsconfig.json
.Вы можете иметь несколько
tsconfig.json
файлов в своем рабочем пространстве и запускать несколько компиляций одновременно, если хотите (например, фронтенд и бэкэнд отдельно).Оригинальный ответ:
Вы можете сделать это с помощью команд Build:
Создайте простое
tsconfig.json
с"watch": true
(это будет указывать компилятору смотреть все скомпилированные файлы):Обратите внимание, что
files
массив опущен, по умолчанию все*.ts
файлы во всех подкаталогах будут скомпилированы. Вы можете предоставить любые другие параметры или изменитьtarget
/out
, просто убедитесь, чтоwatch
установлено значениеtrue
.Настройте вашу задачу ( Ctrl+Shift+P->
Configure Task Runner
):Теперь нажмите, Ctrl+Shift+Bчтобы построить проект. Вы увидите вывод компилятора в окне вывода ( Ctrl+Shift+U).
Компилятор будет автоматически компилировать файлы при сохранении. Чтобы остановить компиляцию, нажмите Ctrl+P->
> Tasks: Terminate Running Task
Я создал шаблон проекта специально для этого ответа:
typescript-node-basic
источник
configure task
: VSCode автоматически обнаружит наличие и выведетtsconfig.json
диалоговое окно, в котором вы можете выбрать либо,tsc: build - tsconfig.json
либоtsc: watch - tsconfig.json
. Выберите последний вариант, и VSCode создастtasks.json
файл (если его раньше не было) и добавит правильную конфигурацию для вас.Если вы хотите избежать использования
CTRL
+SHIFT
+B
и вместо этого хотите, чтобы это происходило при каждом сохранении файла, вы можете привязать команду к тому же ярлыку, что и действие сохранения:Это происходит в вашем keybindings.json - (перейдите к этому, используя File -> Preferences -> Keyboard Shortcuts).
источник
when
условияeditorLangId
имеет значение.Если нажатие Ctrl+ Shift+ Bкажется большим усилием, вы можете включить «Автосохранение» («Файл»> «Автосохранение») и использовать NodeJS для просмотра всех файлов в вашем проекте, а также автоматически запускать TSC.
Откройте командную строку Node.JS, перейдите в корневую папку вашего проекта и введите следующую команду;
И привет, каждый раз, когда VS Code автоматически сохраняет файл, TSC перекомпилирует его.
Эта техника упоминается в сообщении в блоге;
http://www.typescriptguy.com/getting-started/angularjs-typescript/
Прокрутите вниз до «Компилировать при сохранении»
источник
Написать расширение
Теперь, когда vscode является расширяемым, можно подключиться к событию on save через расширение. Хороший обзор написания расширений для VSCode можно найти здесь: https://code.visualstudio.com/docs/extensions/overview
Вот простой пример, который просто вызывает
echo $filepath
и выводит стандартный вывод в диалоге сообщения:(Также упоминается по этому вопросу SO: https://stackoverflow.com/a/33843805/20489 )
Существующее расширение VSCode
Если вы хотите просто установить существующее расширение, я написал следующее, доступное в галерее VSCode: https://marketplace.visualstudio.com/items/emeraldwalk.RunOnSave
Исходный код доступен здесь: https://github.com/emeraldwalk/vscode-runonsave/blob/master/src/extension.ts
источник
Я изо всех сил пытался получить поведение, которое я хочу. Это самый простой и лучший способ заставить файлы TypeScript компилироваться при сохранении в нужную мне конфигурацию только ЭТОГО файла (сохраненный файл). Это tasks.json и keybindings.json.
источник
{ "version": "0.1.0", "command": "tsc", "isShellCommand": true, "args": ["--module","amd","--target","ES5","${file}"], "showOutput": "silent", "problemMatcher": "$tsc" }
keybingings:{ "key": "cmd+s", "command": "workbench.action.tasks.build", "when":"editorTextFocus && editorLangId == 'typescript'" }
Вместо того, чтобы создавать отдельный файл и связывать Ctrl + S, чтобы запустить эту сборку, я бы порекомендовал запустить tsc в режиме просмотра, используя следующий файл tasks.json:
Это однажды соберет весь проект, а затем перестроит файлы, которые будут сохранены, независимо от того, как они были сохранены (Ctrl + S, автосохранение, ...)
источник
обновленный
В твоем
tsconfig.json
если проблема не устранена, выполните любое из следующих действий:
Перезапустите редактор или измените любой маршрут, верните его обратно и сохраните приложение. Это начнет компилироваться. т.е.
источник
Я реализовал компиляцию при сохранении с gulp, используя gulp-typcript и пошаговую сборку. Это позволяет контролировать компиляцию как угодно. Обратите внимание на мою переменную tsServerProject, в моем реальном проекте у меня также есть tsClientProject, потому что я хочу скомпилировать мой клиентский код без указанного модуля. Как я знаю, вы не можете сделать это с кодом.
источник
Выберите « Настройки» -> «Параметры рабочего пространства» и добавьте следующий код. Если включена горячая перезагрузка, изменения немедленно отражаются в браузере.
источник
Текущее состояние этой проблемы:
https://github.com/Microsoft/vscode/issues/7015
источник
Я могу сказать, что с последней версией кода на языке TypeScript 1.8.X и 1.0 кода Visual Studio показанная мною техника устарела. Просто используйте tsconfig.json на корневом уровне вашего проекта, и все работает автоматически для проверки синтаксиса. Затем используйте tsc -w в командной строке для автоматического просмотра / перекомпиляции. Он прочитает тот же файл tsconfig.json для опций и настроек компиляции ts.
источник
Чрезвычайно простой способ автоматической компиляции при сохранении - ввести в терминал следующее:
tsc main --watch
где
main.ts
ваше имя файлаОбратите внимание, что он будет работать только до тех пор, пока этот терминал открыт, но это очень простое решение, которое можно запустить во время редактирования программы.
источник
tsc -w
также работает для всех машинописных файлов в проектеВам нужно увеличить лимит часов, чтобы исправить проблему перекомпиляции при сохранении, открыть терминал и ввести эти две команды:
Чтобы сделать изменения постоянными даже после перезапуска, выполните эту команду также:
источник
попробовал вышеуказанные методы, но мой остановил автокомпиляцию, когда захотелось, из-за того, что максимальное количество файлов для просмотра превысило лимит.
запустить
cat /proc/sys/fs/inotify/max_user_watches
команду.если он показывает меньшее количество файлов, включая node_modules, откройте файл
/etc/sysctl.conf
с правами root и добавьтеfs.inotify.max_user_watches=524288
в файл и сохранитьснова запустите команду cat, чтобы увидеть результат. Это сработает! с надеждой!
источник
Я использую автоматические задачи, запускаемые в папке (должен работать VSCode> = 1.30) в .vscode / tasks.json
Если это не помогло открыть папку проекта, попробуйте Ctrl + Shift + P и Задачи: Управление автоматическими задачами в папке и выберите «Разрешить автоматические задачи в папке» в основной папке проекта или рабочей папке.
источник