Grunt watch & TypeScript - как сделать это быстрее?

У меня сложный рабочий процесс компиляции TS, и я хочу сделать своих наблюдателей быстрее (и все же умнее). В настоящее время у меня есть 3 разных компиляции TS, которые выполняются при запуске Grunt, но также и при смене часов.

grunt-ts конфигурация: https://gist.github.com/Vadorequest/f1fb95ab4bbc786f420b

grunt-watch конфигурация: https://gist.github.com/Vadorequest/eaa82c292a5d3e1ee51f

В настоящее время это работает. Но перекомпиляция каждого файла занимает слишком много времени каждый раз, когда вносятся изменения в любой файл TS, принадлежащий к набору файлов. Я ищу способ скомпилировать только то, что должно быть скомпилировано, умным способом. (Это означает, что если A.ts наследует B.ts, если B изменяется, то следует также перекомпилировать A, это должно быть возможно, поскольку WebStorm IDE может сделать это, используя свои наблюдатели файлов)

Я прочитал кое-что о fast-compile на https://github.com/TypeStrong/grunt-ts но не похоже, что я мог бы его использовать, но я в замешательстве. (см. https://github.com/TypeStrong/grunt-ts/issues/293)

Я ищу решение, а также советы, потому что я думаю, что мои настройки могут быть улучшены. Замечательно иметь файлы TS на стороне сервера и даже общие файлы TS на сервере и клиенте, но это добавляет большой рабочий процесс компиляции, который трудно понять и поддерживать. Может быть, с использованием последней функции tsconfig.json помог бы? Любой совет будет принят во внимание.

Больше деталей:

  • serverCommonJs: сервер использует файлы TS, скомпилированные до запуска приложения, например, контроллеры и модели.
  • clientCommonJs: большинство клиентских сценариев находятся в CommonJ, а не в AMD, потому что все они объединены и минимизированы, а работать с commonJS намного проще, чем с AMD, для которой требуется множество настроек.
  • amd: Некоторые файлы скомпилированы в AMD, независимо от того, используются ли они на сервере или в клиенте, или в обоих.

На моем компьютере сборка одного набора файлов занимает от 1,5 до 2,5 с. После компиляции все они копируются во временную папку, которая подается в браузер (ресурсы). Таким образом, это легко занимает от 5 до 10 секунд и может быть намного быстрее, если только измененные файлы были скомпилированы и скопированы.

У меня также есть похожая проблема с файлами LESS, но это другая история, и ее должно быть гораздо проще исправить, так как у меня есть только один набор файлов LESS.

0 ответов

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