Функция TypeScript "Compile on save" не работает в Visual Studio 2015
функция "компиляция при сохранении" не работает для меня после обновления до Visual Studio 2015. Когда я делаю изменения в .ts
файл в моем проекте и сохранить, строка состояния в нижней части IDE говорит Output(s) generated successfully
, но созданный .js
файл не меняется.
вот что я пробовал:
-
добавление следующего в корень
<Project>
элемент в моем.csproj
:<PropertyGroup> <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled> </PropertyGroup>
-
проверка и сняв Опция "автоматически компилировать файлы TypeScript, которые не являются частью проекта" в
Tools -> Options -> TypeScript -> Project
: -
двойная проверка, чтобы убедиться, что" компиляция при сохранении " проверяется в свойствах сборки TypeScript моего проекта:
что я упустил?
в качестве примечания, шаг компиляции TypeScript работает так, как ожидалось при запуске обычной сборки.
10 ответов:
для меня это был такой вариант в
tsconfig.json
:"compileOnSave": true, "compilerOptions": { ... },
перезапустите Visual Studio, чтобы это изменение вступило в силу.
я наткнулся на эту проблему сегодня: я исправил это с помощью нового
"watch":true
параметр компилятора, также доступный через JSON в самых последних версиях TypeScript:{ "compilerOptions": { "watch": true } }
после этого мне пришлось решить еще одну проблему, связанную со следующей ошибкой, которая появилась в окне вывода:
Object doesn't support property or method 'watchFile'
оказалось, что моя система использует устаревшую версию TypeScript (1.0.x), несмотря на то, что я был уверен, что у меня был более новый, который пришел с Visual Studio 2015 Update 1 (1.7). Если вы столкнулись с этой проблемой, вы можете легко проверить свою версию tsc, введя
tsc -v
из командной строки.если он говорит
1.0.x
или что-нибудьC:\Program Files (x86)\Microsoft SDKs\TypeScript
если нет, обновите соответственно. Открой CPanel>система>Advanced>Переменные Среды выберите Системные Переменные и нажать кнопку Edit; просмотрите список в поисках любой ссылки на папку TypeScript, измените один из них, чтобы он указывал на вашу последнюю установленную версию TypeScript (
1.7
или выше) и удалить любые другие простофили. Смотреть также скриншот ниже:дополнительные сведения см. этот пост.
устранение:
для меня, и я совершенно уверен, что это также относится и к другим, это было связано с ошибкой в tsconfig.формат JSON.
вам нужно добавить "compileOnSave": true. Но в глобальном разделе не внутри compilerOptions.
Wrong: { "compilerOptions": { "noImplicitAny": false, "noEmitOnError": true, "removeComments": false, "sourceMap": true, "target": "es5", "compileOnSave": true }, "exclude": [ "node_modules", "wwwroot" ] } Correct: { "compilerOptions": { "noImplicitAny": false, "noEmitOnError": true, "removeComments": false, "sourceMap": true, "target": "es5" }, "compileOnSave": true, "exclude": [ "node_modules", "wwwroot" ] }
С уважением,
Андерс Как Basechat.
в моем случае я установил Visual Studio Community 2015 вместе с side VS 2012. Я использовал Web Essentials для typescript в 2012 году, который, казалось, конфликтовал с 2015 годом.
удаление Web Essentials в 2012 году Исправлена проблема для меня.
с typescript 2 вы должны удалить "outDir": из вашего tsconfig. Исправьте ошибку для меня в visual studio.
в свойствах проекта - > "TypeScript Build", вы также можете просто снять флажок " Не выдавать выходные данные, если какие-либо ошибки сообщаются."Проверив его, кажется, деактивирует транспилинг при сохранении, где есть ошибка или нет.
The
"compileOnSave": true,
не работал на меня. Я, наконец, понял, что Visual Studio не чтят"compileOnSave": true,
значение, если оно определено в другом.json
файл, который вы расширяете. Он должен быть в корне, чтобы он работал.
найдите файл, т. е. C:\file.ТС в своем
terminal/cmd
и типаtsc file.ts -w // watches for file changes and converts on save
точно такая же проблема здесь. Я использую Visual Studio 2015 update 3 и TypeScript 2.9.2.0. В tools / options/projects and solutions / external web tools я обновил $(PATH) до второй позиции. Со всеми этими конфигурациями compileOnSave: true не работает для меня. Обходное решение-открыть командную строку, Выполнить
ng build --watch
на стороне и пусть узел позаботится о автоматической компиляции