Коллеги, добрый день
У меня возникла следующая ситуация: сам я являюсь .Net разработчиком и пока менять основную область не планирую, однако сейчас встала задача разработки небольшой JS/TS — библиотеки (и, подозреваю, будет вставать еще, но так же эпизодически).
Поэтому хочется подобрать/настроить под себя среду максимально близкую к текущей.
Т.е. если примерно рассмотреть процесс разработки небольшой библиотеки под .Net в VS он выглядит примерно так:
Создаем проект Class Library — для основного кода
Создаем отдельно проект тестов. Этот проет ссылается на первый + мы в него подключаем свой любимый фремворк для Unit Tests (NUnit, XUnit, MSTest, ...) и для мокирования (Moq, MS Shims, ...)
Пишем тесты и код (ну или наоборот — кому как нравится). Для проверки и отладки используем запуск тестов из VS (либо из Resharper, либо из стандартного интерфейса — средствами соответсвующего тестадаптера).
Для публикации, либо включаем библиотеку в нужный Solution (если таковых не много, и всем так удобнее), либо делаем NuGet-пакет, который размещаем или в закрытом репозитории пактов, или выкладываем наружу.
Дополнительно можем настроить статический анализ синтаксиса и/или логики, CI, ...
На сколько подобный процесс реально воспроизвести под VS? И вообще, на сколько он соответсвует тому, что принято в разработке на JS/TS?
Из того, что я смог отыскать и понять на текущий момент, и какие есть вопросы:
Если я хочу "просто библиотеку", то мне следует смотреть в сторону средств разработки Node.js. Все остальные варианты тащат за собой еще и серверную Web-инфраструктуру. Так?
Однако из стандартных проектов, которые доступны под VS для Node, есть только Console Application. Следует использовать его, или поискать что-то еще?
Где и как принять писать тесты? В отдельном проекте или в том, же где основной код?
Есть ли какие-то устоявшиеся решения для написания Unit tests и создания моков? Принято ли использовать какие-то фреймворки или все пишут руками? Есть ли что-то подобное подходу NUnit / MSTest (т.е. когда пишется класс с публичными методами, а потом размечают специальными аттрибутами, которые указывают, что этот метод делает — инициализацию, очистку, само тестирование, ...)?
Как принято запускать и отлаживать код под тестами? Я наткнулся на вот такое расширение студии (Test Adapter / Runner) Chutzpah он поддерживает такие фреймворки как Jasmine, Mocha, QUnit. Достаточно ли будет этого расширения или стоит поискать что-то иное? Если да, то на каком из поддерживаемых им фреймворков стоит остановиться?
Как публиковать/распространять свою библиотеку? Тут как я понимаю, моменты следующие: референсы между JS проектами в Visual Studio не поддерживаются, поэтому остаются 2 варианта — передавать вручную или создать пакет. Соответсвенно, какой именно пакет? Исходя из того, что VS вроде начала более-менее не плохо работать с NPM, нет смысла заморачиваться чем-то еще, правильно?
Как правильно работать с TS? Я так понимаю, артефактами моей работы будут: файл(ы) с JS-кодом и описания тиов (.d.ts) Или я не прав и TS библиотеки распространяют прямо в исходных .ts файлах? Но если я прав в первом предположении, то как принято распространять в таком случае: JS-в одном пакете, .d.ts — в другом, или всё в одном?
Ну и несколько дополнительных вопросов:
Как принято запускать код для тестирования под разными браузерами? И принято ли вообще? Какими средствами это можно делать?
Есть ли какие-то статические анализаторы/чекеры которые способны выявлять потенциальные проблемы несовместимости? Например, что используемый в моем коде или в сторонней библиотеке метод/класс не поддерживается в таких-то браузерах.
Какие в принципе используются средства статического (или иного) анализа кода, помимо тех, что я упомянул в тексте?
Понимаю, что вопросов много и большинство, наверняка, верх наивности, поэтому буду признателен если вы сможете:
подсказать хотя бы часть (основное с вашей точки зрения)
дать ссылку на статью(и), где описаны подходящие решения.
Заранее спасибо