Итак, у вас есть отличная идея, которая изменит мир? Или вы просто хотите написать клиентскую библиотеку для доступа к TimeZoneDB API?

Когда вы садитесь переписывать историю с помощью этого модуля, чтобы закончить все модули, вы понимаете, что не знаете, с чего начать. Есть так много входов и выходов и того, что у вас есть, которые нужно рассмотреть, прежде чем вы напишете свою первую строку кода.

Как вы структурируете свой проект? Какие расширения VSCode следует установить? С какой конфигурации tslint мне следует начать и что вообще означают эти правила? Как настроить tsconfig.json для правильной компиляции проекта?

Затем вы начинаете думать о тестировании, покрытии кода, непрерывной интеграции и непрерывной доставке, пока не сойдете с ума, пытаясь выяснить, кто является изобретателем YAML, чтобы вы могли вежливо спросить, не было ли это просто местью Дугласу Крокфорду.

Примечание для поставщиков услуг. Дуглас Крокфорд является изобретателем JSON, который является форматом файла конфигурации, который вы должны использовать. *утки*

Дело не в том, что вы не можете прочитать полную документацию для каждого инструмента, который вам нужен, или написать от руки свой собственный .gitignore, просто мир не может ждать три недели, пока вы будете бродить по тине, пока у вас не будет надежной настройки. Людям нужна информация о часовом поясе прямо сейчас.

К счастью для вас, какой-то придурок уже совершил путешествие и привез спайс. С помощью простого git clone вы можете сэкономить недели исследований, бросив вызов глубинам документации tslint, настроив надежное тестирование с покрытием кода, написав конфигурацию за конфигурацией, создав сценарии, настроив CI/CD, написав конфигурации запуска и задачи, и все неудачи и разочарования, через которые мы неизбежно проходим.

Обещаю, я помыл руки, прежде чем отпустить его.

Typescript NPM Module Starter — это установка с батарейками, позволяющая сразу приступить к работе с вашим модулем npm без вышеупомянутой головной боли. Полная документация по работе с репозиторием находится в README по ссылке, но ниже приведен краткий обзор того, что включено.

Тестирование

Используя mocha (в частности, mocha-typescript) и, при необходимости, sinon для тестирования, тесты пишутся в удобном для чтения стиле класса с декораторами. Тесты компилируются на лету и есть заранее написанный скрипт для запуска наблюдателя. Покрытие с istanbul/nyc предварительно настроено, и значок покрытия создается с помощью сценариев выпуска. Вы можете просто написать свои тесты и запустить их.

Линтинг

Качество кода, согласованность и удобочитаемость имеют решающее значение, как и предотвращение распространенных ошибок. Включена очень самоуверенная конфигурация tslint, основанная на знаменитом tslint-config-airbnb, но много часов дополнительного времени, потраченного на настройку точных правил для наиболее совершенных Машинописный код, который можно написать, по моему скромному мнению. Используйте прилагаемый конфиг или добавьте свой собственный. Это просто работает.

Конфигурация VSCode

Чтобы вы могли начать правильно, существует набор рекомендаций по расширениям, которые работают с предоставленными конфигурациями. Существует конфигурация запуска для тестов, поэтому вы можете отлаживать тесты, когда что-то идет не так, как планировалось. Есть задачи для запуска скриптов lint, test, test watcher и build. И, наконец, есть файл настроек, предназначенный для того, чтобы сделать ваш опыт отличным из коробки.

Непрерывная интеграция

Инструкции в ссылке на репозиторий помогут вам начать работу с CircleCI, бесплатной службой для проектов с открытым исходным кодом, позволяющей запускать анализ, тестировать и создавать сценарии в контейнере в облаке. Или на нем. Какой бы ни.

Делайте это ради удовольствия или следуйте инструкциям по ссылке, чтобы предотвратить попадание кода, не прошедшего lint, test или build, в вашу основную ветку. Полная конфигурация CircleCI YAML (yuk) предоставляется для непрерывного интеграционного тестирования. Просто следуйте инструкциям, и это работает.

Полные инструкции предоставляются для сценариев ручного развертывания, когда вы хотите нажать кнопку для публикации в npm. Это также является обязательным требованием, если вы используете двухфакторную аутентификацию для публикации в npm, поскольку у CircleCI нет возможности пройти аутентификацию с помощью 2FA.

Непрерывное развертывание

Если вам нужен полный автономный опыт и вы согласны с тем, что 2FA не требуется для публикации npm, есть включенная конфигурация CircleCI YAML для непрерывного развертывания.

Когда вы запускаете включенный сценарий выпуска и выполняете очень простую процедуру, тег git создается при создании новой версии выпуска вашего модуля. Тег будет, например, v1.0.0. CircleCI распознает тег номера версии и запустит обычный рабочий процесс сборки с анализом, тестированием и сборкой. Если все они выполняются успешно, он автоматически опубликует ваш модуль в npm.

Представьте себе, полная установка разработчика на компакт-диск с помощью одного git clone!

Разное

Конечно, существуют всевозможные другие конфигурации, настройки папок и другие решения, которые необходимо принять, чтобы такой проект заработал. Все они были настроены надежным способом, чтобы просто работать. Вы можете взять их такими, какие они есть, или изменить их по своему вкусу, но я думаю, что это самый простой способ просто взяться за дело.

  • gitignore настроен на проверку встроенного (скомпилированного) кода. Сценарий выпуска гарантирует, что это произойдет до того, как вы выпустите его.
  • npmignore настроен на публикацию только созданного (скомпилированного) кода и определений типов
  • Прочтите сценарий release.sh. Он пытается убедиться, что вы ничего не забыли (незафиксированный код, устаревший файл блокировки, забыли зафиксировать новую сборку)

Часовой поясБД

Я не шутил. Я действительно создал клиентскую библиотеку, чтобы управлять ими всеми. Это бесстыдная вилка? да. Проверьте timezonedb. Именно эта установка использовалась при создании этого модуля.

Ваши часовые пояса принадлежат нам.

Вывод

Я надеюсь, что вы найдете это полезным. Я счастлив, что мне не придется проходить через это снова до осени, когда наступит следующее величайшее событие. Кто-то тихо шепчет: «Kubernetes. Истио. Это снова мы.